SQL 基本信息

SQL 诊断功能旨在分析和诊断 TopSQL、SlowSQL 和可疑 SQL,帮助您优化数据库性能。

基本概念

SQL 诊断的基本概念如下:

  • TopSQL:是指在指定时间范围内整体响应时间最长的 SQL 语句。

  • SlowSQL:是指执行时间超过 500ms 的 SQL 语句。

  • 可疑 SQL:是指根据规则、算法筛选出的可能导致性能问题的 SQL 语句。

说明

目前,系统对标准版(Key-Value)集群实例有如下限制:

  • 对于版本号大于等于 4.2.4 但小于 4.3.0 的 KV 集群实例,支持显示 TopSQLSlowSQL 的诊断信息。

  • 对于其他版本的 KV 集群实例,仅支持显示 SlowSQL 的诊断信息。

TopSQL

TopSQL 是指在指定时间范围内整体响应时间最长的 SQL 语句。

image

  • 单击快捷筛选项,例如 全表扫描多分区扫描 等,快速识别出需要优化的 SQL。

  • 单击 操作 列的 查看样本,可以查看该 SQL 语句。

  • 单击 SQL 文本前的 +,查看 最后一次报错统计时段内报错汇总image

  • 单击列表右上方的 查看优化建议,可跳转至优化中心查看优化建议。

  • 单击列表右上方的 TopSQL 对比,可以对比相同 SQL 在同一个节点的不同时段或在不同节点上的运行情况。

    • 不同时段对比:将同一节点上相同 SQL 在基准和对比时段的运行情况进行对比,然后查看 明细数据对比性能趋势对比 信息。image

    • 不同节点对比:将相同 SQL 在基准节点与其他节点的运行情况进行对比,然后查看 明细数据对比响应时间趋势对比 信息。

      说明
      • 相同 SQL 是指相同的数据库和 SQL ID。

      • 当不同节点对比时,只有不同节点上执行相同 SQL 才会输出结果。

  • 当发现某个节点 CPU 负载过高时,可以先筛选 数据库节点,然后根据 CPU 时间 对 SQL 进行降序排序,从而识别出最需要优化的 SQL。image

SlowSQL

SlowSQL 是指执行时间超过 500ms 的 SQL 语句。

image

  • 单击快捷筛选项,例如 全表扫描多分区扫描 等,快速识别出需要优化的 SQL。

  • 单击 操作 列的 查看样本,可以查看该 SQL 语句。

可疑 SQL

可疑 SQL 是指根据规则、算法筛选出的可能导致性能问题的 SQL 语句。以下是常见的诊断结果及处理建议:

诊断结果

处理建议

Hint 未生效

异常 SQL,需要 DBA 确认是否使用 OUTLINE 进行执行计划固化。

全表扫描性能较差

请分析执行计划和表结构,确认 SQL 有合适的索引可用。

走索引但性能比较低

请确认业务场景是否可以接受此性能,若不可接受请改进业务逻辑或优化索引。

性能比以前下降

请确认数据分布变化、请求量突涨、执行计划变化等情况。

执行计划变动且性能下降

需 DBA 确认,可使用 OUTLINE 进行执行计划固化,以判断是否为异常 SQL。

执行次数突刺

需确认业务量,可能导致整体性能下降。

CPU 负载过高

请确认业务场景、数据分布变化、请求量突涨、执行计划变化等情况。

疑似锁冲突

SQL 存在重试,可能是锁冲突导致,请排查业务逻辑,是否存在锁冲突场景。

DML 访问过多分区数

请改写 SQL,保证 SQL 能进行分区裁剪。

疑似 Buffer 表

请确认相关表是否在频繁更新。

疑似存在大小账号

请排查是否存在数据倾斜问题。

执行计划不稳定

请排查是否存在计划恶化的问题。

计划生成时间过长

请排查是否存在计划命中率低等问题。

可疑 SQL 页签展示了 SQL 文本SQL ID数据库诊断结果 等信息。

image