MySQL 知识地图与速学路线
这不是另一篇从头讲概念的教程,而是整个 MySQL 专题的导航页。目标是让你快速知道“要学什么、学到什么程度、面试会怎么追问”。
一张图看全知识体系
mermaid
flowchart TD
A["基础使用"] --> B["内部原理"]
B --> C["性能优化"]
B --> D["事务并发"]
C --> E["生产运维"]
D --> E
E --> F["架构治理"]
F --> G["面试表达与实战"]
A1["SQL / 数据类型 / 表设计 / 字符集"] --> A
B1["架构 / 页 / Buffer Pool / B+Tree"] --> B
C1["优化器 / EXPLAIN / Join / 慢 SQL"] --> C
D1["ACID / 隔离级别 / 锁 / MVCC / 日志"] --> D
E1["配置 / 权限 / 监控 / 备份 / DDL"] --> E
F1["复制 / 高可用 / 分区 / 分库分表"] --> F必须掌握的八层能力
| 层级 | 必须能回答 | 对应文档 |
|---|---|---|
| 1. SQL 与建模 | 类型怎么选、约束怎么定、SQL 逻辑执行顺序是什么 | MySQL 8 新特性、SQL 基础、SQL 进阶、MySQL 函数、表设计、复杂关联 |
| 2. 架构与存储 | 一条 SQL 经过哪些层,数据页和 Buffer Pool 怎么工作 | 架构分层、存储引擎与 Buffer Pool |
| 3. 索引 | B+Tree、聚簇索引、回表、覆盖索引、最左前缀 | 索引、存储结构 |
| 4. 执行与优化 | 为什么选这个索引,怎样用证据定位慢 SQL | EXPLAIN、优化器、性能优化 |
| 5. 事务并发 | ACID、RC/RR、快照读、当前读、锁范围、死锁 | 事务、锁、MVCC |
| 6. 日志与恢复 | undo、redo、binlog 各做什么,两阶段提交为什么必要 | 更新事务全过程、日志 |
| 7. 生产运维 | 参数、权限、监控、备份、DDL、故障怎么处理 | 安装与配置、监控排障、备份恢复 |
| 8. 架构扩展 | 复制、高可用、分区、归档、分库分表怎么选 | 复制、高可用、分区与在线 DDL、分库分表、ShardingSphere |
7 天面试突击路线
第 1 天:SQL、类型和表设计
掌握 select、Join、子查询、CTE、窗口函数、事务语句;能说明 decimal、datetime、timestamp、varchar、text 的选择;能为订单表设计主键、唯一键和审计字段。
第 2 天:索引与执行计划
手画三层 B+Tree;讲清聚簇索引、二级索引和回表;会依据真实查询设计联合索引;按 type → key → key_len → rows → filtered → Extra 分析 EXPLAIN。
第 3 天:事务、锁与 MVCC
不要只背 ACID。要能从两个会话解释 RC 和 RR 的 Read View 差异,解释记录锁、间隙锁、临键锁,能根据死锁日志还原加锁顺序。
第 4 天:日志与更新链路
沿着 索引定位 → 加锁 → undo → 修改内存页 → redo → binlog → 两阶段提交 讲一次 update;明确三类日志的层次、内容、生命周期和用途。
第 5 天:慢 SQL 与生产排障
能区分 CPU、IO、锁等待、连接耗尽、复制延迟;会用慢日志、Performance Schema、EXPLAIN ANALYZE、SHOW ENGINE INNODB STATUS 建证据链。
第 6 天:复制、备份和高可用
讲清 source、relay log、replica 重放、GTID、异步与半同步;明确复制不是备份;能设计全量备份加 binlog 的 PITR,并说明 RPO、RTO。
第 7 天:项目题和模拟面试
先完成 SQL 查询面试题 训练现场写 SQL,再做商业场景训练营,最后用面试题库做三轮回答:第一轮每题 30 秒,第二轮每题 2 分钟,第三轮加入项目数据与权衡。
回答面试题的通用结构
建议用四步,不要上来堆名词:
- 先下定义:一句话说明它是什么、解决什么问题。
- 再讲机制:列出关键对象和完整链路。
- 补边界条件:说明版本、隔离级别、索引和数据量等前提。
- 落到生产:给监控指标、排查命令、优化收益和副作用。
例如回答“为什么有索引仍然慢”:
text
索引只是候选访问路径,不保证扫描量小。先看优化器是否选中,再看扫描范围、回表次数、排序临时表和锁等待;用 EXPLAIN ANALYZE 与慢日志核对估算和实际值。优化可能是重排联合索引、缩小返回集、改游标分页或更新统计信息,同时评估新增索引的写放大和空间成本。自测标准
真正掌握一个知识点,要同时做到:
- 能用自己的话解释,不依赖背诵原句。
- 能写最小 SQL 复现现象。
- 能说出至少一个错误用法和后果。
- 能说明如何从监控或执行计划验证判断。
- 能把它与上下游知识点串起来。
