← 中文资源

简体中文版本

数据库查询调优工作流

找出最慢查询、读取执行计划,并以可度量的前后对比调优索引或语句。

阅读英文原文

目标

应针对影响最大的查询进行可度量的优化,降低数据库延迟。本工作流用查询统计按总耗时排序,读执行计划定位全表扫描、错误估算或缺失索引,针对具体问题加索引、改写或调结构,最后在相近条件下对比延迟与负载证明改进。

步骤要点

  1. 按总耗时对查询排序。
  2. 读取执行计划定位慢的原因。
  3. 针对具体问题加索引、改写或调结构。
  4. 在相近条件下对比证明改进。
-- rank by total time
SELECT query, total_exec_time FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 10;

验证

按顺序执行上述步骤后,逐项确认每个步骤的预期状态均已满足;只有全部预期状态成立,才认为本流程完成。若某一步未达到预期状态,应先按排错提示排查,不要跳过继续,以免掩盖问题。

排错提示

  • 优化罕见慢查询会忽略更大收益。
  • 盲目加索引会拖慢写入。
  • 不做前后对比无法证明改进。

适用边界

  • 需要慢查询统计与计划工具。
  • 按计划决定加索引还是改写。