---
title: "可疑 SQL 诊断 | OceanBase 文档中心"
description: 可疑 SQL 诊断 可疑 SQL 是指根据诊断类型结合SQL的语句、执行历史、表结构进行诊断，当 SQL 语句符合诊断特征时，请根据处理建议，进行操作。 操作步骤 在左导航栏单击 租户 ，并在 租户列表 中单击具体的租户进入租户 总览 页面。 在左侧导航栏单击 SQL 诊断 ，进入 SQL 诊断 页面。 若集群参数 …
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*lJTmRZ61jSUAAAAAAAAAAAAADiGDAQ/original) 云平台 OCPV 4.0.3 企业版

# 可疑 SQL 诊断

更新时间：2023-08-30 10:06:07

可疑 SQL 是指根据诊断类型结合SQL的语句、执行历史、表结构进行诊断，当 SQL 语句符合诊断特征时，请根据处理建议，进行操作。

## **操作步骤**

1. 在左导航栏单击 **租户** ，并在 **租户列表** 中单击具体的租户进入租户 **总览** 页面。
 2. 在左侧导航栏单击 **SQL 诊断** ，进入 **SQL 诊断** 页面。

   若集群参数 enable_sql_audit 和租户参数 ob_enable_sql_audit 中任何一个未配置成打开，则 **SQL 诊断** 页面将缺失 SQL 诊断数据。可通过提示中的按钮修改参数值。

   ![08251639](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/3045889261/p312416.png)
 3. 单击 **可疑 SQL** 页签。
 4. 对可疑 SQL 进行筛选。

      1. 配置筛选条件。

             - 时间范围：可在 **时间范围** 下拉框中选择 近 5 分钟、近 10 分钟、近 20 分钟、近 30 分钟、近 1 小时、近 3 小时来快速选择时间范围；也可在下拉框中选择自定义时间，并配置开始时间和结束时间。默认显示近 30 分钟内的信息。
             - 内部 SQL：若勾选，则查询结果中会包含由 OceanBase 内部发起的 SQL。
             - 关键词：查询结果中会显示 SQL 文本中包含该关键词的 SQL。匹配方式与 SQL 的 LIKE 相同，且默认自动在输入的字符串前后加了 % 符号。
             - 高级条件： **高级条件** 支持同时添加多个过滤条件。单击 **添加** ，在 **添加高级条件** 面板中，可对指标、运算符和指标值进行配置，查询时将获取指标满足条件的 SQL 展示在查询结果列表中。

        ![Image 1](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/7490489461/p429704.png)
      2. 单击 **查询** ，下方列表中将展示所有符合查询条件的 SQL。

        支持复制 SQL 文本，并查看诊断结果。同时支持根据数据库对 SQL 文本进行筛选；支持根据执行次数、平均响应时间、平均 CPU 时间和计划生成时间对 SQL 文本进行排序。

        ![Image 11](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/ocp/402-cn/%E5%8F%AF%E7%96%91sql.png)
 5. 单击 **导出可疑 SQL** 按钮，将导出列表中展示的所有可疑 SQL。
 6. 查看可疑 SQL 信息。

   单击 SQL 文本下内容，您可进入具体 SQL 页面。在 **SQL 详情** 页中，您可查看该 SQL 的详细信息，包括：

      - 在 **SQL 文本** 处查看 SQL 的完整语句。
      - 在 **优化建议** 处查看对于该 SQL 的优化建议，详见 [查看优化建议](https://www.oceanbase.com/docs/enterprise-oceanbase-ocp-cn-10000000001538804)。
      - 查看诊断详情：您可查看特定时间内的诊断结果。

       诊断类型及处理方法等信息如下：

       | 诊断类型 | 对应参数 | 索引分析情况 | SQL 风险等级 | 说明及处理建议 |
       | --- | --- | --- | --- | --- |
       | 执行计划变动且性能下降 | `ocp.perf.sql-diag.performance-degradation-after-plan-changed-config` | 无 | 高 | 该 SQL 的执行计划有变化，且变化后性能下降。 需 DBA 确认，可使用 outline 进行执行计划固化，以判断是否为异常 SQL。 |
       | 全表扫描且无可用索引 | `ocp.perf.sql-diag.table-scan-index-not-exists-config` | 分析索引 | 高 | 该 SQL 执行涉及的部分表因无可用索引而进行了全表扫描。 建议创建合适的索引。 |
       | 全表扫描但有索引未执行 | `ocp.perf.sql-diag.table-scan-index-not-exists-config` | 分析索引 | 高 | 该 SQL 执行涉及的表都有索引，但有些表未走索引而直接进行了全表扫描。 需确认数据分布与业务场景。 |
       | Hint 未生效 | `ocp.perf.sql-diag.ineffective-hint-config` | 分析索引 | 高 | 该 SQL 语句的 Hint 里指定了索引，但执行时没走指定的索引。 需确认 SQL 的 Hint 与实际执行计划是否一致。 |
       | 性能比以前下降 | `ocp.perf.sql-diag.performance-degradation-config` | 无 | 中 | 该 SQL 在诊断时间内，平均 CPU 占用时间比历史均值高。 需确认数据分布变化和租户整体队列等待情况等信息。 |
       | 走索引但性能较低 | `ocp.perf.sql-diag.awful-performance-index-used-config` | 分析索引 | 中 | 该SQL 执行通过索引访问相关表，但仍性能较低。 需确认数据分布与业务场景。 |
       | 执行次数突刺 | `ocp.perf.sql-diag.execution-spike-config` | 无 | 中 | 该 SQL 执行次数在某一时间段内突然飙高。可在 **SQL 详情** 的 **历史趋势** 中查看执行次数。 需确认业务量，可能导致整体性能下降。 |
       | 热点行锁 | `ocp.perf.sql-diag.row-lock-contention-high-config` | 无 | 中 | 需确认业务场景，`select for update` 类型的语句执行频率超过设定值，且 CPU 时间大于设定值。 |
       | CPU 整体占比超过百分比 | `ocp.perf.sql-diag.cpu-time-proportion-high-config` | 无 | 低 | 诊断时段内，CPU 时间整体占比（该 SQL 执行占用 CPU 时间 / 该租户内所有 SQL 执行占用 CPU 时间 * 100%）过高。 请确认业务场景、数据分布变化、请求量突涨、执行计划变化等情况。 |

       OCP 诊断时默认对 SQL 的响应时间和执行频率等属性进行了一定的限制，您可参考 [SQL 性能模块](https://www.oceanbase.com/docs/enterprise-oceanbase-ocp-cn-10000000001541973) 中的参数说明，在 OCP 的 **系统参数** 中搜索并修改参数默认值，来自定义诊断对象及判定标准。
      - 在 **历史趋势** 页签，查看该 SQL 运行的历史趋势，详见 [查看 SQL 运行的历史趋势](https://www.oceanbase.com/docs/enterprise-oceanbase-ocp-cn-10000000001538804)。
      - 在 **执行计划** 页签，查看该 SQL 的执行计划，或为其绑定执行计划，详见 [查看 SQL 的执行计划](https://www.oceanbase.com/docs/enterprise-oceanbase-ocp-cn-10000000001538804)。
      - 在 **索引** 页签，查看该 SQL 绑定的索引，详见 [查看和绑定索引](https://www.oceanbase.com/docs/enterprise-oceanbase-ocp-cn-10000000001538804)。
      - 在 **SQL 限流** 页签，查看该 SQL 的限流情况，或为其设置限流，详见 [设置 SQL 限流](https://www.oceanbase.com/docs/enterprise-oceanbase-ocp-cn-10000000001538804)。
      - 在 **执行计划** 、 **索引** 、 **SQL 限流** 页签的图示 ① 处，均可查看该 SQL 的绑定记录。

       在绑定记录中您可查看到已绑定计划的状态，可通过 **取消绑定** 按钮将 SQL 与该计划解绑，也可通过 **绑定** 按钮将二者再次绑定。

   ![Image 15](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/7490489461/p429706.png)
 7. 设置限流。

      - 单击 **设置限流** ，您可对 SQL 进行限流，详见 [设置 SQL 限流](https://www.oceanbase.com/docs/enterprise-oceanbase-ocp-cn-10000000001538804)。
      - 选择多个 SQL ，单击 **批量设置限流** ，在弹窗框中输入并发数，可对相关 SQL 进行相同并发数限流设置。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
