SQL Pattern

云原生数据仓库 AnalyticDB MySQL 版的实时统计分析功能提供了SQL Pattern指标特性,有效提升智能诊断效率,能够对相似的SQL进行聚合,并呈现出聚合后的特性。

背景信息

SQL Pattern是依托于全量且实时的SQL而产生的功能,通过对SQL进行分类、诊断和分析,聚合相似SQL为一类SQL,有效提升智能诊断的效率。同时,SQL Pattern的聚合结果能作为数据库优化的有效依据。针对导致实例压力过大的Bad SQL,用户还可以通过拦截功能,对其进行拦截,快速恢复实例,详情请参见Persist plan and Query-Blocker

功能说明

SQL Pattern具备以下功能。

  • Pattern聚合:根据SQL文本,将相似的SQL进行分组。

  • Pattern宏观统计:建立均值与最值比较以及每个Pattern关键指标的总量及其占比。

  • 异常SQL排查:排查出异于历史的Pattern并提供钻取功能,直达问题SQL,获取诊断结果。

注意事项

仅支持查看过去14天内的SQL Pattern记录,每次查询的时间范围最长为24小时。

操作步骤

  1. 登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,在数仓版页签,单击目标集群ID。

  2. 在左侧导航栏,单击诊断与优化

  3. 单击SQL Pattern页签。

    默认展示最近30分钟的SQL Pattern。您可以通过SQL关键字或时间范围搜索SQL Pattern。

    SQL Pattern列表各项参数说明如下:

    参数

    说明

    操作

    单击查看详情,查看特定SQL Pattern的详细信息。更多信息,请参见Pattern分析

    用户名

    提交Pattern相关SQL的数据库用户名。

    客户端IP

    提交Pattern相关SQL的客户端IP地址。

    SQL Pattern

    SQL Pattern的具体语句。您可以单击2复制完整的SQL。

    CPU Cost总量

    在查询时间范围内,Pattern相关SQL执行时占用CPU的总时间。括号中的百分比表示该Pattern执行时占用CPU的总时间占所有Pattern执行时占用CPU的总时间的比例,若比例超过30%将自动高亮显示。

    通过观察Pattern的CPU Cost占比,可以初步判断该时段内某类查询对CPU消耗的影响是否较大,您也可以结合CPU监控指标进一步分析。

    点击查看CPU Cost总量占比的计算方法

    假设有5条SQL(分别为:SQL1、SQL2、SQL3、SQL4、SQL5),SQL1、SQL2、SQL3属于Pattern1;SQL4、SQL5属于Pattern2。SQL1、SQL2、SQL3、SQL4、SQL5对应的CPU Cost为50 ms,1 s,70 ms,1.5 s,1 s。则:

    • Pattern1的CPU Cost总量为1.12 s。计算方法为0.05‬s+1s+0.07s=1.12s

    • Pattern2的CPU Cost总量为2.5 s。计算方法为1.5‬s+1s=2.5s

    • Pattern1的CPU Cost总量占比为30.9392%。计算方法为1.12/(1.12+2.5)*100%=30.9392%

    • Pattern2的CPU Cost总量占比为69.0607%。计算方法为2.5/(1.12+2.5)*100%=69.0607%

    峰值内存总量

    在查询时间范围内,Pattern相关SQL使用的峰值内存总和。括号中的百分比表示该Pattern峰值内存总和占所有Pattern峰值内存总和的比例,若比例超过30%将自动高亮显示。

    通过观察Pattern的峰值内存占比,可以初步判断该时段内某类查询对内存消耗的影响是否较大,您也可以结合计算内存使用率监控指标进行进一步分析。

    点击查看峰值内存总量占比的计算方法

    假设有5条SQL(分别为:SQL1、SQL2、SQL3、SQL4、SQL5),SQL1、SQL2、SQL3属于Pattern1;SQL4、SQL5属于Pattern2。SQL1、SQL2、SQL3、SQL4、SQL5对应的峰值内存为1 GB,2 GB,3 GB,3 GB,1 GB。则:

    • Pattern1的峰值内存总量为6 GB。计算方法为1 GB+2 GB+3GB=6 GB

    • Pattern2的峰值内存总量为4 GB。计算方法为1 GB+3 GB=4 GB

    • Pattern1的峰值内存总量占比为60%。计算方法为6/(6+4)*100%=60%

    • Pattern2的峰值内存总量占比为40%。计算方法为4/(6+4)*100%=40%

    耗时总量

    在查询时间范围内,Pattern相关SQL的执行耗时总和。括号中的百分比表示该Pattern的执行耗时总和占所有Pattern执行耗时总和的比例,若比例超过30%将自动高亮显示。

    通过观察Pattern的执行耗时占比,可以初步判断该时段内某类查询对查询RT监控指标增长的影响是否较大,您也可以结合查询RT监控指标进一步分析。

    点击查看耗时总量占比的计算方法

    假设有5条SQL(分别为:SQL1、SQL2、SQL3、SQL4、SQL5),SQL1、SQL2、SQL3属于Pattern1;SQL4、SQL5属于Pattern2。SQL1、SQL2、SQL3、SQL4、SQL5对应的耗时为50 ms,1 s,70 ms,1.5 s,1 s。则:

    • Pattern1的耗时总量为1.12 s。计算方法为0.05‬s+1s+0.07s=1.12s

    • Pattern2的耗时总量为2.5 s。计算方法为1.5‬s+1s=2.5s

    • Pattern1的耗时总量占比为30.9392%。计算方法为1.12/(1.12+2.5)*100%=30.9392%

    • Pattern2的耗时总量占比为69.0607%。计算方法为2.5/(1.12+2.5)*100%=69.0607%

    数据读取总量

    在查询时间范围内,Pattern相关SQL读取数据的总量。括号中的百分比表示该Pattern读取数据总量占所有Pattern读取数据总量的比例,若比例超过30%将自动高亮显示。

    通过观察Pattern的读取数据占比,可以初步判断该时段内某类查询的数据读取量是否较大,您也可以结合表读取结果数据量监控指标进一步分析。

    点击查看数据读取总量占比的计算方法

    假设有5条SQL(分别为:SQL1、SQL2、SQL3、SQL4、SQL5),SQL1、SQL2、SQL3属于Pattern1;SQL4、SQL5属于Pattern2。SQL1、SQL2、SQL3、SQL4、SQL5对应的数据读取量为1 GB,2 GB,3 GB,3 GB,1 GB。则:

    • Pattern1的数据读取总量为6 GB。计算方法为1 GB+2 GB+3GB=6 GB

    • Pattern2的数据读取总量为4 GB。计算方法为1 GB+3 GB=4 GB

    • Pattern1的数据读取总量占比为60%。计算方法为6/(6+4)*100%=60%

    • Pattern2的数据读取总量占比为40%。计算方法为4/(6+4)*100%=40%

    数据读取Cost总量

    在查询时间范围内,Pattern相关SQL读取数据时占用CPU的总时间。括号中的百分比表示该Pattern读取数据占用CPU的总时间占所有Pattern读取数据占用CPU总时间的比例,若比例超过30%将自动高亮显示。

    通过观察Pattern的读取数据占比,可以初步判断该时段内某类查询的读取数据时占用CPU的总时间是否较大。如果读取数据时占用CPU的总时间增大,则会影响预留节点(存储节点)的CPU使用率,您也可以结合预留节点CPU监控指标原存储节点CPU监控指标进一步分析。

    点击查看数据读取Cost总量占比的计算方法

    假设有5条SQL(分别为:SQL1、SQL2、SQL3、SQL4、SQL5),SQL1、SQL2、SQL3属于Pattern1;SQL4、SQL5属于Pattern2。SQL1、SQL2、SQL3、SQL4、SQL5对应的数据读取Cost为50 ms,1 s,70 ms,1.5 s,1 s。则:

    • Pattern1的数据读取Cost总量为1.12 s。计算方法为0.05‬s+1s+0.07s=1.12s

    • Pattern2的数据读取Cost总量为2.5 s。计算方法为1.5‬s+1s=2.5s

    • Pattern1的数据读取Cost总量占比为30.9392%。计算方法为1.12/(1.12+2.5)*100%=30.9392%

    • Pattern2的数据读取Cost总量占比为69.0607%。计算方法为2.5/(1.12+2.5)*100%=69.0607%

    平均CPU Cost

    在查询时间范围内,Pattern相关SQL执行时占用CPU时间的均值。

    最大CPU Cost

    在查询时间范围内,Pattern相关SQL执行时占用CPU时间的最大值。

    平均表读取CPU Cost

    在查询时间范围内,Pattern相关SQL读取数据时占用CPU时间的均值。

    最大表读取CPU Cost

    在查询时间范围内,Pattern相关SQL的读取数据时占用CPU时间的最大值。

    执行次数

    在查询时间范围内,Pattern相关SQL的执行次数。如果实例出现资源水位突增的情况,用户可以通过执行次数排序,查看实例运行异常时段哪些SQL执行次数较多,并进一步分析这些SQL执行次数突增是否正常。

    失败次数

    在查询时间范围内,Pattern相关SQL的执行失败次数。

    平均总耗时

    在查询时间范围内,Pattern相关SQL的平均查询耗时,单位毫秒(ms)。

    最大总耗时

    在查询时间范围内,Pattern相关SQL的最大查询耗时,单位毫秒(ms)。通过比较最大总耗时和平均查询时间,可以了解指定Pattern的耗时增加是否受到其他SQL的影响。如果在实例运行正常时段内最大总耗时和平均查询时间接近,那么在实例运行异常时段当前pattern的耗时增加可能是受到了其他SQL的影响。

    平均执行耗时

    在查询时间范围内,Pattern相关SQL的平均执行耗时,单位毫秒(ms)。

    最大执行耗时

    在查询时间范围内,Pattern相关SQL的最大执行耗时,单位毫秒(ms)。执行耗时的定义,详见查询监控图和查询列表介绍

    平均峰值内存

    在查询时间范围内,Pattern相关SQL的平均峰值内存,单位Byte。

    最大峰值内存

    在查询时间范围内,Pattern相关SQL的最大峰值内存,单位Byte。通过比较最大峰值内存和平均峰值内存,您可以判断指定SQL使用的内存资源的稳定性。如果最大峰值内存远大于平均峰值内存,说明当前Pattern的SQL可能存在扫描数据量增加或者执行计划改变的问题,可以单击查看详情,在查询详情页面,查看SQL列表进一步定位原因。

    平均扫描量

    在查询时间范围内,Pattern相关SQL的平均扫描量,单位MB。

    最大扫描量

    在查询时间范围内,Pattern相关SQL的最大扫描量,单位MB。通过比较最大扫描量和平均扫描量,可以判断同类Pattern的SQL的数据读取量的稳定性。如果出现最大扫描量远大于平均扫描量的情况,说明数据读取量不稳定,则需判断是否为正常情况。

    表名

    SQL Pattern扫描的数据库表。

Pattern分析

Pattern分析页面以图形化的方式展示SQL在时间维度上的执行次数、查询耗时、执行耗时、扫描量以及峰值内存等重要指标,其中查询耗时、执行耗时、扫描量和峰值内存指标分别提供了最大值和平均值,方便用户进行比较和分析。SQL列表提供了当前Pattern在分析时段内的所有相关的SQL,您可以单击诊断,查看SQL的诊断结果和执行计划,具体操作,参见使用执行计划分析查询

SQL Pattern页签的SQL Pattern列表中,单击查看详情,进入Pattern分析页面,您可以查看SQL Pattern多个指标的时序变化和SQL列表。

相关API