慢查询治理

慢查询是数据库性能问题的线索来源:开启慢查询日志,按总耗时贡献排序,用执行计划定位扫描行数与临时表,建立治理台账跟踪闭环。

定位

定位
-- 查看执行计划与扫描行数
EXPLAIN ANALYZE SELECT ...;
-- 慢日志按总耗时排序:平均耗时 × 调用次数
-- 优先处理高频中等耗时,而非单次极端值
  • 开启慢日志,阈值按业务 P99 与磁盘 IO 承受度校准
  • 按总耗时 = 平均耗时 × 调用次数排序,先治理贡献最高项
  • 用 EXPLAIN 检查扫描行数、索引命中、临时表与排序方式
  • 按序优化:补改索引 → 改写查询 → 调整数据模型,缓存最后
  • 修复前后记录耗时对比,写入台账并纳入周期性复扫
治理顺序先看总耗时贡献:单次 10 秒每月一次,未必比每次 50ms 每秒千次更值得优先处理。

易错点

  • 只清理单次最慢的查询,忽略高频中等耗时项
  • 治理后未加回归监控,退化无人发现

数据来源与参考

  • 《高性能 MySQL(第 4 版)》
  • MySQL 8.0 Reference Manual:Slow Query Log
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌