09 | 普通索引和唯一索引,应该怎么选择?
什么条件下可以使用 change buffer 呢?
10 | MySQL为什么有时候会选错索引?
优化器的逻辑
扫描行数是怎么判断的?
MySQL 是怎样得到索引的基数的呢?
11 | 怎么给字符串字段加索引?
alter table SUser add index index2(email(6));
前缀索引对覆盖索引的影响
其他方式
第一种方式是使用倒序存储(身份证)
第二种方式是使用 hash 字段
12 | 为什么我的MySQL会“抖”一下?
innodb_io_capacity
13 | 为什么表数据删掉一半,表文件大小不变?
将 innodb_file_per_table 设置为 ON
14 | count(*)这么慢,我该怎么办?
按照效率排序的话,count(字段)<count(主键 id)<count(1)≈count(*),所以我建议你,尽量使用 count(*)
16 | “order by”是怎么工作的?
全字段排序
rowid 排序
17 | 如何正确地显示随机消息?
随机排序方法
18 | 为什么这些SQL语句逻辑相同,性能却差异巨大?
案例一:条件字段函数操作
案例二:隐式类型转换
案例三:隐式字符编码转换
19 | 为什么我只查一行的语句,也执行这么慢?
等MDL锁
等 flush
行锁
20 | 幻读是什么,幻读有什么问题?
幻读是什么?怎么发生的?有什么问题?
间隙锁的引入,优缺点
问题都是在可重复读隔离级别下的,间隙锁是在可重复读隔离级别下才会生效的。所以,你如果把隔离级别设置为读提交的话,就没有间隙锁了。但,你要解决可能出现的数据和日志不一致问题,需要把 binlog 格式设置为 row。这也是现在不少公司使用的配置组合
21 | 为什么我只改一行的语句,锁这么多?
22 | MySQL有哪些“饮鸩止渴”提高性能的方法?
短连接风暴
慢查询性能问题
QPS 突增问题
23 | MySQL是怎么保证数据不丢的?
binlog 的写入机制
redo log 的写入机制
24 | MySQL是怎么保证主备一致的?
为什么会有 mixed 格式的 binlog?
恢复数据
mysqlbinlog 工具解析出来,然后把解析结果整个发给 MySQL 执行
SET TIMESTAMP=1546103491。它用 SET TIMESTAMP 命令约定了接下来的 now() 函数的返回时间
循环复制问题
双M结构,server id
25 | MySQL是怎么保证高可用的?
聊到这里你就知道了,在满足数据可靠性的前提下,MySQL 高可用系统的可用性,是依赖于主备延迟的。延迟的时间越小,在主库故障的时候,服务恢复需要的时间就越短,可用性就越高。
什么是MVCC?
基本原理
基本特征
InnoDB存储引擎MVCC的实现策略
MVCC下InnoDB的增删改查如何work的
26 | 备库为什么会延迟好几个小时?
MySQL 5.5 版本的并行复制策略
按表分发策略
按行分发策略
27 | 主库出问题了,从库怎么办?
28 | 读写分离有哪些坑?