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 | 读写分离有哪些坑?