章节摘要:第 4 章解决了"索引怎么建",本章解决"慢查询怎么治"。治理慢查询是一门诊断学科:先用 EXPLAIN 拿到执行计划,读懂每个字段的暗示;再按 WHERE 写法、JOIN 顺序、排序分组三个高发病灶逐个排查;最后用慢查询日志建立长效监控,把救火变成防火。本章延续评审会叙事——这一轮评审的议题是"上线前必须通过的性能体检"。
阅读完本章,你应当能够:
优化闭环只有四步:测量(慢日志定位)→ 诊断(EXPLAIN 归因)→ 处方(改写或加索引)→ 复测(再跑 EXPLAIN 验证)。跳过任何一步都会退化成玄学调优。本章四节恰好对应前两步的深化,处方与复测则复用第 4 章的索引设计。
金句:没有测量就没有优化——先让慢查询自己浮出水面,再谈怎么治。
5.1 EXPLAIN 语句分析:执行计划是数据库写的"病历"。本节逐字段拆解输出,重点讲 type 等级刻度与 Extra 里的高频信号词,配一张健康阶梯图。
5.2 SQL 语句与 WHERE 优化:同样语义的查询,写法不同性能天差地别。本节汇总 WHERE 与整体写法的优化清单——条件顺序、范围改写、SELECT 列裁剪、深分页。
5.3 排序与分组优化:ORDER BY 与 GROUP BY 是 Using filesort、Using temporary 两大信号词的老家。本节讲索引如何消化排序、内存排序参数怎么起作用、分组改写的技巧。
5.4 慢查询日志分析:慢查询治理的入口设施。开启配置、日志字段逐项解读、pt-query-digest 风格的聚合分析思路,以及治理看板的建法。
5.1 是工具总纲,5.2 和 5.3 是两个专项病灶的处置手册,5.4 是让前三节持续发挥作用的监控底座。诊断能力(5.1)先行,专项知识(5.2、5.3)见招拆招,长效机制(5.4)兜底——这是一个从个案到体系的完整闭环。
+---------------------+ | 5.1 EXPLAIN 总纲 | +---------+-----------+ v +---------------------+ +---------------------+ | 5.2 WHERE 与写法 | ---> | 5.3 排序与分组 | | 逐条条件排查 | | filesort 消化 | +---------+-----------+ +----------+----------+ v v +--------------------------------------------------+ | 5.4 慢查询日志:把个案变成体系 | +--------------------------------------------------+
需要第 3 章的 SQL 语义与第 4 章的索引原理——尤其 4.4 的失效三根源,本章的很多处方是它的镜像。学完本章,第 6 章的架构优化(读写分离、分库分表)就是"单机优化到顶后"的下一层楼;第 7 章的监控调优则把 5.4 的日志体系扩展到全库级别。性能优化的次序永远是:SQL 与索引在前,参数与架构在后——顺序错了,钱和力气都白花。