MySQL 8.0Notes

第 31 章:大师之路

zjc 于 2026-01-31 发布

这是《MySQL 8.0 源码与内核实战》的独立章节版。本章从概念、实操和生产排查三个视角展开,代码块保留了原书可直接运行的版本。 MySQL 内核学习的目标不是背函数名,而是建立从现象、模块、数据结构到验证方法的完整推理链。

31.1 成长阶段

阶段 能力
入门 编译、调试、看懂调用链
初级 理解 SQL 层和 handler 边界
中级 掌握 B+Tree、Buffer、事务
高级 分析锁、MVCC、日志和恢复
专家 修改内核、贡献补丁、设计方案

31.2 学习路线

编译调试
  -> SQL 执行路径
     -> 优化器与执行器
        -> 页面与 B+Tree
           -> Buffer Pool
              -> undo / MVCC
                 -> redo / recovery
                    -> lock / purge
                       -> replication / DDL

31.3 实践方法

  1. 每周一个最小复现;
  2. 每个结论保存调用栈;
  3. 用 MTR 固化行为;
  4. 对比两个版本;
  5. 读对应测试;
  6. 做性能基准;
  7. 写技术笔记;
  8. 尝试提交小补丁。

31.4 进阶方向

方向 内容
查询优化 代价模型、join search
执行引擎 迭代器、并行、表达式
存储结构 页格式、压缩、索引
事务恢复 WAL、checkpoint、crash safe
高可用 binlog、MGR、failover
云原生 多租户、弹性、存储计算分离

31.5 工程判断

内核专家会先问:

  1. 问题属于哪一层;
  2. 当前版本是什么;
  3. 代价和风险是什么;
  4. 如何复现;
  5. 如何验证;
  6. 如何回滚;
  7. 是否值得修改内核;
  8. 是否可用架构方案替代。

本章小结

大师之路靠可复现实验和长期积累。沿着 SQL 层到 InnoDB 的路径不断验证,最终能解释行为、定位问题,并在必要时安全修改内核。

思考题

  1. 你最想深入哪个模块?
  2. 如何建立一个长期源码笔记库?
  3. 什么情况下才值得修改内核?
  4. 如何设计一个内核改动的回滚方案?
  5. 下一个最小实验是什么?