首批通过分布式安全可靠测评,为关键业务系统打造
SQL 诊断概述
更新时间:2023-11-21 09:58:00
SQL 问题是性能问题中最常见的一类。OCP 提供了 SQL 诊断的多维度功能,并根据 SQL 运行特征将 SQL 分为可疑 SQL、TopSQL、SlowSQL 和 ParallelSQL,当 SQL 执行过程中出现异常时,您可以针对不同应用场景来选择不同的诊断类型,对 SQL 进行异常定位。 并支持通过 SQL Plan 和 Outline 对执行计划进行查看和修改。
TopSQL 诊断
TopSQL 是以 SQL 请求的 SQL ID 为聚合维度来统计各种不同形状 SQL 的执行统计信息,并按照不同的资源消耗进行 SQL 排序、展示 SQL 执行的历史趋势。您可以通过 TopSQL 功能分析此类 SQL 的请求行为,发现其中可能存在的异常请求,或者有针对性地对 SQL 进行性能调优分析。
可疑 SQL 诊断
SQL 诊断源于 OCP 现有的 TopSQL 采集数据,并内置专家经验来对 SQL 进行诊断,找出存在潜在风险的 SQL,即为可疑 SQL。SQL 诊断的数据来源与 TopSQL 相同,每个诊断项都从 OCP 的 monitordb 元数据中,通过一定规则匹配(CPU 时间、执行频率等)获取待诊断的对象进行诊断。 可疑 SQL 会将性能下降和执行计划发生变化的 SQL 进行展示,您需重点关注。同时,可疑 SQL 的诊断结果中包含性能下降的原因分析等信息,可以为您的 SQL 调优提供更明确的指导意见。
SlowSQL
OCP 将执行时间超过一定时间(可设定,默认 100ms)的 SQL 称之为 SlowSQL,您可根据业务场景来对 SlowSQL 进行不同的阈值配置,SlowSQL 的影响在于:
- SQL 响应时间慢,响应时间长。
- 系统资源开销大,极端情况可能导致系统不可用。
因此,需要将这些有可能会影响系统稳定性的 SlowSQL 进行收集分析,帮助您提早排查问题,规避风险。OCP 的 SlowSQL 关注单次 SQL 执行的信息,对 oceanabse v$sql_audit 的数据进行采样保存,您能从各个维度来分析 SlowSQL 的资源消耗和执行详情。
ParallelSQL
ParallelSQL 是指使用并行调度机制执行的 SQL。您可通过 ParallelSQL 诊断查看 AP 查询性能不符合预期的 SQL,并通过SQL 执行画像查看采集时间范围内算子级别的 SQL 执行详情。
Outline 绑定
在通过上述 SQL 诊断功能找到异常 SQL 以后,如果判断是由于 SQL 执行计划不对而导致的性能问题的话,OCP 提供基于索引的 outline 绑定功能,支持直接修改 SQL 的执行计划,要求数据库能够按照您的期望来使用合适的执行计划。 Outline 绑定功能主要用来解决一些特定场景的问题:
- 数据库优化器有缺陷,对应某些场景会使用错误的执行计划,比如优化器基于统计信息的代价计算在大量增量数据的情况下会可能产生错误的执行计划。
- SQL 请求对数据库产生过大压力的时候,需要在数据库端减缓用户的请求速度。
SQL Plan
在 SQL 诊断页面的 SQL 列表中,单击任意一条 SQL 可以进入 SQL 详情页面,在该页面中,除了可查看 SQL 的详细执行语句外,OCP 还支持 SQL 执行计划历史的展示,包括:
- 执行计划历史趋势。
- 执行计划列表和详情。