MySQL 系列

MySQL 系列

把 MySQL 拆成三块讲:单机里一条 SQL 怎么走 → 两台机器之间怎么同步 → 面试会追问到哪一层。

按这个顺序读,前后是接得上的。第一篇讲清 Server 层、引擎层、文件层的分界线;第二篇把视角从一台机器拉到两台;第三篇是前两篇的考点化收口,十五个问题分三辑,全部配了可交互的图。

五个可交互的图

页面里的按钮会在新窗口打开,都是单文件、不依赖网络:

图 能做什么
体系结构动图 光点沿真实路径走一遍,SELECT / UPDATE 两套流程,可单步、可点模块看详解
主从复制动图 异步 / 半同步各 8 步,能看清 ACK 那条唯一的回程线
第一辑:索引与事务 B+ 树拖滑块算容量、MVCC 切隔离级别看读到什么、间隙锁点 SQL 看锁住哪段
第二辑:内核与运维 点日志看它落在哪一层、Buffer Pool 三个链表怎么搬页、EXPLAIN 逐级对照、备份恢复拖时间轴
第三辑:并发与分布式 走一遍死锁成环的全过程、切 ICP 看回表次数、输 user_id 实时算落到哪个分片、六个阶段看迁移、点 CDC 链路每一段

三篇之间的关系

第一篇回答「数据存在哪、谁在动它」。 核心是三条分界线:Server 层不碰磁盘、锁在引擎层、binlog 不属于 InnoDB。这三条推得出后面所有的细节。

第二篇回答「另一台机器怎么跟上」。 传的是日志不是数据,中间隔着一个 relay log——所有复制延迟都是这个结构的代价。

第三篇回答「面试官会从哪个角度切进来」。 索引为什么是 B+ 树、回表贵在哪、联合索引为什么断在范围上、RR 和 RC 差在 ReadView 的时机、间隙锁为什么锁住不存在的行;再往上还有一层——高并发下死锁怎么形成、单表扛不住怎么拆、拆完怎么不停机迁走、变更怎么实时送到下游。

配套的练习与题库