首批通过分布式安全可靠测评,为关键业务系统打造
可疑 SQL 诊断
更新时间:2023-08-30 10:06:07
可疑 SQL 是指根据诊断类型结合SQL的语句、执行历史、表结构进行诊断,当 SQL 语句符合诊断特征时,请根据处理建议,进行操作。
操作步骤
在左导航栏单击 租户 ,并在 租户列表 中单击具体的租户进入租户 总览 页面。
在左侧导航栏单击 SQL 诊断 ,进入 SQL 诊断 页面。
若集群参数 enable_sql_audit 和租户参数 ob_enable_sql_audit 中任何一个未配置成打开,则 SQL 诊断 页面将缺失 SQL 诊断数据。可通过提示中的按钮修改参数值。

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

单击 查询 ,下方列表中将展示所有符合查询条件的 SQL。
支持复制 SQL 文本,并查看诊断结果。同时支持根据数据库对 SQL 文本进行筛选;支持根据执行次数、平均响应时间、平均 CPU 时间和计划生成时间对 SQL 文本进行排序。

单击 导出可疑 SQL 按钮,将导出列表中展示的所有可疑 SQL。
查看可疑 SQL 信息。
单击 SQL 文本下内容,您可进入具体 SQL 页面。在 SQL 详情 页中,您可查看该 SQL 的详细信息,包括:
在 SQL 文本 处查看 SQL 的完整语句。
在 优化建议 处查看对于该 SQL 的优化建议,详见 查看优化建议。
查看诊断详情:您可查看特定时间内的诊断结果。
诊断类型及处理方法等信息如下:
诊断类型 对应参数 索引分析情况 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 性能模块 中的参数说明,在 OCP 的 系统参数 中搜索并修改参数默认值,来自定义诊断对象及判定标准。
在 历史趋势 页签,查看该 SQL 运行的历史趋势,详见 查看 SQL 运行的历史趋势。
在 执行计划 页签,查看该 SQL 的执行计划,或为其绑定执行计划,详见 查看 SQL 的执行计划。
在 索引 页签,查看该 SQL 绑定的索引,详见 查看和绑定索引。
在 SQL 限流 页签,查看该 SQL 的限流情况,或为其设置限流,详见 设置 SQL 限流。
在 执行计划 、 索引 、 SQL 限流 页签的图示 ① 处,均可查看该 SQL 的绑定记录。
在绑定记录中您可查看到已绑定计划的状态,可通过 取消绑定 按钮将 SQL 与该计划解绑,也可通过 绑定 按钮将二者再次绑定。

设置限流。
单击 设置限流 ,您可对 SQL 进行限流,详见 设置 SQL 限流。
选择多个 SQL ,单击 批量设置限流 ,在弹窗框中输入并发数,可对相关 SQL 进行相同并发数限流设置。