大纲整理
01 | 基础架构:一条SQL查询语句是如何执行的?
https://time.geekbang.org/column/article/68319
02 | 日志系统:一条SQL更新语句是如何执行的?
https://time.geekbang.org/column/article/68633
第一部分: 前十五章
日志 事务 与 锁:
03 | 事务隔离:为什么你改了我还看不见?
https://time.geekbang.org/column/article/68963
06 | 全局锁和表锁 :给表加个字段怎么有这么多阻碍?
https://time.geekbang.org/column/article/69862
07 | 行锁功过:怎么减少行锁对性能的影响?
https://time.geekbang.org/column/article/70215
12 | 为什么我的MySQL会“抖”一下?
https://time.geekbang.org/column/article/71806
13 | 为什么表数据删掉一半,表文件大小不变?
https://time.geekbang.org/column/article/72388
14 | count(*)这么慢,我该怎么办?
https://time.geekbang.org/column/article/72775
15 | 答疑文章(一):日志和索引相关问题
https://time.geekbang.org/column/article/73161
索引
04 | 深入浅出索引(上)
https://time.geekbang.org/column/article/69236
05 | 深入浅出索引(下)
https://time.geekbang.org/column/article/69636
09 | 普通索引和唯一索引,应该怎么选择?
https://time.geekbang.org/column/article/70848
10 | MySQL为什么有时候会选错索引?
https://time.geekbang.org/column/article/71173
11 | 怎么给字符串字段加索引?
https://time.geekbang.org/column/article/71492
16 | “order by”是怎么工作的?
https://time.geekbang.org/column/article/73479
17 | 如何正确地显示随机消息?
https://time.geekbang.org/column/article/73795
实战
18 | 为什么这些SQL语句逻辑相同,性能却差异巨大?
https://time.geekbang.org/column/article/74059
案例一:条件字段函数操作
案例二:隐式类型转换
案例三:隐式字符编码转换
即:对索引字段做函数操作,可能会破坏索引值的有序性,因此优化器就决定放弃走树搜索功能.
因此,每次你的业务代码升级时,把可能出现的、新的SQL语句explain一下,是一个很好的习惯
19 | 为什么我只查一行的语句,也执行这么慢?
https://time.geekbang.org/column/article/74687
20 | 幻读是什么,幻读有什么问题?
https://time.geekbang.org/column/article/75173
21 | 为什么我只改一行的语句,锁这么多?
https://time.geekbang.org/column/article/75659
22 | MySQL有哪些“饮鸩止渴”提高性能的方法?
https://time.geekbang.org/column/article/75746
23 | MySQL是怎么保证数据不丢的?
https://time.geekbang.org/column/article/76161
24 | MySQL是怎么保证主备一致的?
https://time.geekbang.org/column/article/76446
25 | MySQL是怎么保证高可用的?
https://time.geekbang.org/column/article/76795