如何找出最耗时的查询:从日志到指标

副标题 / 摘要 慢查询不是靠猜,而是靠数据。本文给出从日志、监控到执行计划的完整定位路径。 目标读者 负责数据库性能的工程师 需要定位瓶颈的开发者 SRE / DBA 背景 / 动机 性能问题常常被误判为“代码慢”,其实可能是数据库查询失控。 系统化的慢查询定位流程能节省大量时间。 核心概念 慢查询日志:记录超过阈值的 SQL 执行计划(EXPLAIN):查看索引与扫描方式 P95/P99:关注尾部延迟 查询归因:把 SQL 与请求链路对应起来 实践指南 / 步骤 开启慢查询日志 统计高频/高耗 SQL 用 EXPLAIN 分析执行计划 补齐索引或重写 SQL 验证优化效果(对比指标) 可运行示例 EXPLAIN SELECT * FROM orders WHERE user_id = 123; 解释与原理 慢查询可能来自全表扫描、索引失效、JOIN 不合理。 通过 EXPLAIN 可以看到查询是否走索引、扫描行数等关键指标。 常见问题与注意事项 索引越多越好吗? 不是,索引会增加写入成本。 慢查询一定是 SQL 写错吗? 不一定,也可能是统计信息过期或数据分布变化。 只看平均值会漏问题吗? 会,要看 P95/P99。 最佳实践与建议 建立慢查询告警 结合 APM 定位调用链 优化后回归测试 小结 / 结论 定位慢查询需要从日志、指标、执行计划三层入手。 找到瓶颈后再谈优化,才是高效路径。 参考与延伸阅读 MySQL Slow Query Log PostgreSQL pg_stat_statements EXPLAIN 使用指南 元信息 阅读时长:7~9 分钟 标签:慢查询、数据库性能 SEO 关键词:Slow Query, EXPLAIN, 索引 元描述:系统化定位慢查询的方法与流程。 行动号召(CTA) 打开一次慢查询日志,挑出 TOP 3 SQL 先优化。

2026年1月24日 · 1 分钟 · map[name:Jeanphilo]