本文介绍 SQL 诊断页面的信息,包括 SQL 统计、性能监控、租户级请求分析、性能监控和 SQL 列表。
统计信息
在统计信息区域,您可以根据时间进行筛选,查看当前实例内可疑 SQL、SlowSQL、高危 SQL 和 新增 SQL 的数量,以及各租户下的对应数量。单击租户名称,系统会在下方的租户诊断信息区域联动展示该租户在对应时间段内的诊断信息详情。
性能监控
在性能监控区域,您可以根据时间进行筛选,查看集群 SQL 性能相关信息。
查看请求分析
单击租户行右侧的 查看请求分析 按钮,查看 SQL 的执行耗时分布和请求执行情况。
查看性能监控
单击租户行右侧的 查看性能监控,可查看租户的监控数据信息。
租户诊断信息
您可以通过租户名后的下拉箭头选择租户,查看该租户的 TopSQL、SlowSQL、可疑 SQL、高危 SQL 和 新增 SQL 的诊断信息。
通过 数据库、节点、关键词、时间范围 对 SQL 列表进行筛选,也支持通过 高级搜索 进行更多指标的匹配筛选。如下示例中, 通过关键词
CREATE
和高级搜索条件总数据库耗时 > 200ms
,筛选出了相应的 TopSQL 记录。单击不同列表项中的 图标,可以基于该列的排序整理列表。
列表中的展示列支持自定义,单击 列管理 即可展示支持筛选的所有列。
可单击右上方的 导出 ,下载对应 SQL 列表。
单击 SQL 文本可以查看 SQL 诊断详情,包括 SQL 文本、物理执行计划、SQL 执行历史、表信息 及 高级设置等。
打开 聚合 in 查询,将会聚合 In 查询的结果,但不影响统计数据。在列表中可以看到聚合标识,将指针放在对应 SQL ID 可查看聚合的其他 SQL ID。
存在一类文本中包含 IN 子句的 SQL,并且 IN 子句的内容都为简单常量。在不开启聚合 In 查询的时候,IN 子句中常量个数不同时,SQL 诊断会将其视为不同的 SQL;当开始聚合 In 查询时,SQL 诊断会将其视为同一类 SQL,将这些 SQL 的信息统一汇总到一行记录上。
TopSQL
TopSQL 是指在选定的时间范围内,整体响应时间最长的 SQL 语句。
TopSQL 分析提供了一些常用的快捷筛选,例如 全表扫描、多分区扫描等,帮助用户快速找到有异常或者需要优化的SQL。
TopSQL 支持通过点击展开查看最后一次错误以及所有发生过的错误信息。
单击列表右上方的 查看优化建议,您将会跳转到优化中心页面查看优化建议。
单击列表右上方的 TopSQL对比,可以对比相同 SQL 在同一个主机节点的不同时段或在不同主机节点上的运行状态及表现。
不同时段对比:将同一个主机节点上的相同 SQL 在基准时段和对比时段的运行情况进行对比。基准时段和对比时段均可自定义,选择需要对比的分析节点,单击 对比分析 可查看 SQL 在同一个主机节点的不同时段运行的 明细数据对比 和 性能趋势对比 信息。
不同节点对比:以基础节点上运行的 SQL 为基准对比相同 SQL 在其他节点上的运行情况。其中对比节点可以选择多个,如果多选,系统会取这些节点上运行的 SQL 交集的平均数据与基准节点上的相同 SQL 进行对比分析。选择或自定义一个分析时段后,单击 对比分析 可查看相同 SQL 在不同节点上运行的 明细数据对比 和 响应时间趋势对比 信息。
说明相同 SQL 是指相同的数据库和 SQL ID。
机器之间执行对比,输出的是这些主机上相同 SQL 的明细和响应时间趋势。如果基准节点与对比节点上没有执行相同的 SQL,则不会输出结果。
TopSQL 功能除了支持对选定租户进行实时诊断,还支持对集群内所有租户的 TopSQL 进行实时诊断。
当发现某台主机 CPU 负载过高时,可以通过节点进行筛选,再根据 CPU 时间倒叙进行 SQL 排序,从而找到最值得优化的 SQL。
说明筛选节点的场景下,暂不支持数据库过滤。
SlowSQL
SlowSQL 是指执行时间超过 500ms 的 SQL 语句。
SlowSQL 分析提供了一些常用的快捷筛选,例如 全表扫描、多分区扫描等。
单击 SlowSQL 操作列的 查看样本,可以查看该 SQL 语句。
可疑 SQL
可疑 SQL 是指平台根据规则、算法筛选出的将会带来性能问题的 SQL,常见的可疑 SQL 诊断结果及处理建议如下。
诊断结果 | 处理建议 |
Hint 未生效 | 异常 SQL,需要 DBA 确认是否使用 OUTLINE 进行执行计划固化。 |
全表扫描性能较差 | 请分析执行计划和表结构,确认 SQL 有合适的索引可用。 |
走索引但性能比较低 | 请确认业务场景是否可以接受此性能,若不可接受请改进业务逻辑或优化索引。 |
性能比以前下降 | 请确认数据分布变化、请求量突涨、执行计划变化等情况。 |
执行计划变动且性能下降 | 需 DBA 确认,可使用 OUTLINE 进行执行计划固化,以判断是否为异常 SQL。 |
执行次数突刺 | 需确认业务量,可能导致整体性能下降。 |
CPU 负载过高 | 请确认业务场景、数据分布变化、请求量突涨、执行计划变化等情况。 |
疑似锁冲突 | SQL 存在重试,可能是锁冲突导致,请排查业务逻辑,是否存在锁冲突场景。 |
DML 访问过多分区数 | 请改写 SQL,保证 SQL 能进行分区裁剪。 |
疑似 Buffer 表 | 请确认相关表是否在频繁更新。 |
疑似存在大小账号 | 请排查是否存在数据倾斜问题。 |
执行计划不稳定 | 请排查是否存在计划恶化的问题。 |
计划生成时间过长 | 请排查是否存在计划命中率低等问题。 |
可疑 SQL 页签展示了 SQL 文本、SQL ID、数据库、诊断结果 等信息。
高危 SQL
高危 SQL 是指可能对系统性能、安全及数据造成危害的 SQL。
目前可识别的高危 SQL 类型如下:
操作描述 | 示例 | 高危类型 | 说明 |
新增或删除列 |
| 表结构变更-新增/删除列 | - |
删除表或数据库 |
| 删除表/数据库 | - |
清空表 |
| 清空数据表 | - |
更新不带条件 |
| 更新不带条件 | - |
更新条件恒为真 |
| 更新条件恒为真 | - |
删除不带条件 |
| 删除不带条件 | - |
删除条件恒为真 |
| 删除条件恒为真 | - |
返回行数过大 |
| 返回行数过大 |
|
影响行数过大 |
| 影响行数过大 |
|
参与分区数过多 |
| 参与分区数过大 |
|
in 条件过多 | where id in (1,2,3,4,5.....) | in 条件过多 | - |
索引变更 |
| 高危变更-索引变更 | - |
高危 SQL 页签展示 SQL 文本、数据库、危险原因 等信息。
新增 SQL
新增 SQL 指在查询区间往前一段时间(默认 7 天)没有执行过,但是在查询区间内有执行记录的 SQL。
新增 SQL 分析提供了一些常用的快捷筛选,例如 全表扫描、多分区扫描等。
- 本页导读 (0)