前言 在使用 MySQL 数据库管理系统时,选择一个合适的存储引擎是一个非常复杂的问题。不同的存储引擎都有各自的特性、优势和使用的场合,正确的选择存储引擎可以提高应用的使用效率。 存储引擎 为了能够正确地选择存储引擎,必须掌握各种存储引擎的特性。下面重点介绍几种常用的存储引擎,它们对各种特性的支持如下表所示。   MySQL存储引擎特性汇总和对比 特性 MyISAM Aria InnoDB MEMORY CSV BlackHole 存储限制 有 有 支持 有 有 无 事务安全 不支持 不支持 支持 不支持…

2023年01月01日 0条评论 2209点热度 0人点赞 路灯 阅读全文

1.数据库中中文编码所占字节数: 字符集 字节数 Ascii 1 GB2312 2 GBK 2 utf-8 (utf8mb3) 3 utf-8 (utf8mb4) 4 utf-8(utf-8mb3)和utf-8mb4的区别: 1、utf-8也叫utf-8mb3: 代表一个字符只需要1~3个字节。 2、utf-8mb4: 代表一个字符需要使用1-4个字节,也就是我们平常说的真正的utf-8编码。 区别: 在MySQL数据库中,utf-8是utf-8mb3的别名,它是使用1~3个字节来表示一个字符的,如果需要使用4个字…

2023年01月01日 0条评论 2205点热度 0人点赞 路灯 阅读全文

在线上环境中,偶尔会发生一些令人“我靠”的问题,其实一部分问题源于数据库。当开发环境、测试环境没有出现的问题在线上环境中却偶然出现时,这也是解决问题的一个方向。 脏读 数据库隔离级别为读未提交的时候,可能发生脏读。读未提交指当会话 A 的数据库操作尚未commit时,会话 B 可以读取到这个未提交的数据。而此时如果会话 A 因为某些原因rollback了,那么会话 B 读取的数据就是错误的,也就是脏读。当隔离级别提高到读已提交时,则可以避免脏读。 不可重复读 简单的理解就是多次读取结果不一致,在会话 A 中多次相同…

2023年01月01日 0条评论 1953点热度 0人点赞 路灯 阅读全文

MySQL有哪些锁呢,从锁范围大小可划分为全局锁、表级锁、行级锁,下面按照这个顺序分别记录一下这些锁的机制及其可用的应用场景。 说明:本文阐述的MySQL锁机制是基于MySQL的innoDb引擎,未明确指明隔离级别的默认都为可重复读。 全局锁 全局锁是指对整个数据库实例进行加锁(可理解为库级别锁?),加全局锁的命令为:flush tables with read lock(FTWRL)。FTWRL锁定整库为只读状态,解锁时用unlock tables进行解锁,或者客户端断开链接自动释放锁。FTWRL做了什么呢?首先…

2023年01月01日 0条评论 2063点热度 0人点赞 路灯 阅读全文

MySQL优化器可以生成Explain执行计划,我们可以通过执行计划查看是否使用了索引,使用了哪种索引? 但是到底为什么会使用这个索引,我们却无从得知。 好在MySQL提供了一个好用的分析工具 — optimizer trace(优化器追踪),可以帮助我们查看优化器生成执行计划的整个过程,以及做出的各种决策,包括访问表的方法、各种开销计算、各种转换等。 1. 查看optimizer trace配置 show variables like '%optimizer_trace%'; 输出参数详解: optimizer_…

2023年01月01日 0条评论 2033点热度 0人点赞 路灯 阅读全文

查看是否支持 SSL 首先在 MySQL 上执行如下命令, 查询是否 MySQL 支持 SSL: 当 have_ssl 为 YES 时, 表示此时 MySQL 服务已经支持 SSL 了. 如果是 DESABLE, 则需要启用 MySQL 的 SSL 功能. 使用 OpenSSL 创建 SSL 证书和私钥 新建一个目录用于存放生成的证书和私钥 警告: ca和server、client的值必须不一致! server、client的Common Name的值必须不一致! server、client的其它值必须一致! //…

2022年12月30日 0条评论 2178点热度 0人点赞 路灯 阅读全文

1. MySQL 可以为多个字段创建索引,一个索引可以包括 16 个字段。对于多列索引,过滤条件要使用索引,必须按照索引建立的顺序,依次满足,一旦跳过某个字段,索引后面的字段都无法被使用。如果查询条件中没有使用这些字段中第 1 个字段时,多列(或联合)索引不会被使用。 2. 计算、函数、类型转换(自动或手动)导致索引失效 3. 范围条件右边的列索引失效 应用开发中范围查询,例如:金额查询,日期查询往往都是范围查询。应将查询条件放置 WHERE 语句最后。(创建的联合索引中,务必把范围涉及到的字段写在最后) 4. 不…

2022年12月28日 0条评论 2194点热度 0人点赞 路灯 阅读全文

前言 对于互联网公司来说,随着用户量和数据量的不断增加,慢查询是无法避免的问题。一般情况下如果出现慢查询,意味着接口响应慢、接口超时等问题。如果是高并发的场景,可能会出现数据库连接被占满的情况,直接导致服务不可用。 慢查询的确会导致很多问题,我们要如何优化慢查询呢? 主要解决办法有: 监控sql执行情况,发邮件、短信报警,便于快速识别慢查询sql 打开数据库慢查询日志功能 简化业务逻辑 代码重构、优化 异步处理 sql优化 索引优化 其他的办法先不说,后面有机会再单独介绍。今天我重点说说索引优化,因为它是解决慢查询…

2022年12月28日 0条评论 2093点热度 0人点赞 路灯 阅读全文

前言 我最近几年用MYSQL数据库挺多的,发现了一些非常有用的小玩意,今天拿出来分享到大家,希望对你会有所帮助。 1.group_concat 在我们平常的工作中,使用group by进行分组的场景,是非常多的。 比如想统计出表中,不同的 province 具体名称有哪些? 具体sql如下: select province from `weather_data` group by province; 但如果想把 province 相同的 city 拼接在一起,放到另外一列中该怎么办呢? 答:使用 group_con…

2022年12月28日 0条评论 1971点热度 0人点赞 路灯 阅读全文
12