MySQL 系列
MySQL 系列
把 MySQL 拆成三块讲:单机里一条 SQL 怎么走 → 两台机器之间怎么同步 → 面试会追问到哪一层。
按这个顺序读,前后是接得上的。第一篇讲清 Server 层、引擎层、文件层的分界线;第二篇把视角从一台机器拉到两台;第三篇是前两篇的考点化收口,十五个问题分三辑,全部配了可交互的图。
Server/引擎/文件三层 · 慢 SQL 卡在哪一层 · 两阶段提交 · 附可播放动图
Dump/I-O/SQL 三段接力 · 延迟出在哪一环 · 半同步与 GTID · 附可播放动图
索引 · 事务 · 日志 · 并发 · 分布式 · 三辑十五张交互图 · 含死锁/分库分表/不停服迁移/CDC
五个可交互的图
页面里的按钮会在新窗口打开,都是单文件、不依赖网络:
| 图 | 能做什么 |
|---|---|
| 体系结构动图 | 光点沿真实路径走一遍,SELECT / UPDATE 两套流程,可单步、可点模块看详解 |
| 主从复制动图 | 异步 / 半同步各 8 步,能看清 ACK 那条唯一的回程线 |
| 第一辑:索引与事务 | B+ 树拖滑块算容量、MVCC 切隔离级别看读到什么、间隙锁点 SQL 看锁住哪段 |
| 第二辑:内核与运维 | 点日志看它落在哪一层、Buffer Pool 三个链表怎么搬页、EXPLAIN 逐级对照、备份恢复拖时间轴 |
| 第三辑:并发与分布式 | 走一遍死锁成环的全过程、切 ICP 看回表次数、输 user_id 实时算落到哪个分片、六个阶段看迁移、点 CDC 链路每一段 |
三篇之间的关系
第一篇回答「数据存在哪、谁在动它」。 核心是三条分界线:Server 层不碰磁盘、锁在引擎层、binlog 不属于 InnoDB。这三条推得出后面所有的细节。
第二篇回答「另一台机器怎么跟上」。 传的是日志不是数据,中间隔着一个 relay log——所有复制延迟都是这个结构的代价。
第三篇回答「面试官会从哪个角度切进来」。 索引为什么是 B+ 树、回表贵在哪、联合索引为什么断在范围上、RR 和 RC 差在 ReadView 的时机、间隙锁为什么锁住不存在的行;再往上还有一层——高并发下死锁怎么形成、单表扛不住怎么拆、拆完怎么不停机迁走、变更怎么实时送到下游。
配套的练习与题库
- MySQL 1Z0-908 练习题 — 47 题带解析,八个模块,有交互版
- MySQL 118 题 · 8 周刷题排期 — 挂靠 26 周计划的第 1-8 周
- 数据库面试题库总览 — 922 道,跨 MySQL / Redis / Oracle / PG / 大数据