如何定位一条慢 SQL?排查时重点看哪些指标?

如何定位一条慢 SQL?排查时重点看哪些指标?

定位慢 SQL 可以从三个入口入手:

  • 实时慢 SQL:查询 GV$OB_SQL_AUDIT ,按 elapsed_time 排序;
  • 全链路追踪:使用 trace_id 查看 SQL 在 ODP、OBServer 各阶段的耗时;
  • 平台化分析:通过 OCP 查看慢 SQL 报表、TOP SQL 和计划变化。

排查时重点看:

  • queue_time 高:说明请求在排队,可能是并发过高、资源不足或需要扩容;
  • execute_time 高:说明执行计划、数据量或索引设计有问题;
  • 是否有大量 EXCHANGE 算子:说明跨机数据搬运较多;
  • 估算行数与实际行数是否偏差大:偏差大通常意味着统计信息不准;
  • 是否出现全表扫描、回表过多或并行执行不合理。