查看查询属性与诊断结果

更新时间:
复制 MD 格式

AnalyticDB for MySQLSQL诊断功能可以对SQL查询的Query、Stage和算子(Operator)级别的信息分别进行统计,再在统计信息的基础上进行诊断并提供调优建议。本文介绍如何在AnalyticDB for MySQL控制台上查看目标查询的属性与各级别的诊断结果。

注意事项

德国(法兰克福)、英国(伦敦)、美国(硅谷)和美国(弗吉尼亚)地域的集群暂不支持SQL诊断功能。

查看查询属性

  1. 进入SQL诊断优化页签。详细操作步骤,请参见进入SQL诊断页签

  2. SQL诊断优化页签的右上角,根据业务需要选择整体检索条件,例如检索最近5分钟耗时最长的100SQL查询。

  3. 在检索结果的图表中,您可以选择如下任意一种方式进入查询详情页面:

    • 方式一

      查询监控区域的趋势图中,每个色块代表一次SQL查询,将鼠标放在色块上可以查看目标查询的相关信息(例如查询开始或结束时间),单击详情即可进入目标查询的详情页面。

      4

    • 方式二

      SQL列表页签下,单击目标查询左侧操作栏中的诊断,即可进入目标查询的详情页面。

      该列表展示各查询的 SQL开始时间查询ID访问源地址数据库状态耗时排队耗时等属性。

  4. 在查询详情页面的查询属性区域,可以查看目标查询语句的执行情况,例如扫描数据返回数据峰值内存等。

    单击页面右上角返回即可回到查询趋势图所在页,查看其它查询的相关信息。

    查询属性面板展示查询的元数据信息,包括开始时间结束时间用户名排队耗时耗时峰值内存写表行数扫描数据(行数和数据量)、查询ID返回数据(行数和数据量)以及查询状态等字段。

查看诊断结果

  1. 根据查看查询属性中的步骤进入查询详情页面。

  2. 在查询详情页面,单击执行计划页签来查看目标查询的执行计划树图。您可以通过执行计划树来查看Query、StageOperator级别的诊断结果:

    • 查看Query级别的诊断结果

      在执行计划树右侧,单击查询级别诊断结果,即可直接查看Query级别的诊断结果详情。更多关于Query级别诊断结果的详情,请参见Query级别诊断结果。诊断结果包含以下诊断项:查询消耗的内存资源较大(警告级别,建议通过分析执行计划找到消耗内存较多的Stage和算子)、查询读取的数据量较大(错误级别,建议调整过滤条件减少数据扫描量)。同时展示Top10耗时/内存倒序表格,例如Stage[2]占耗时99.84%,可据此定位性能瓶颈所在的Stage。

    • 查看Stage级别的诊断结果

      单击执行计划树中某个Stage(如Stage[2]),即可在右侧查看对应Stage诊断结果详情。更多关于Stage级别诊断结果的详情,请参见Stage级别诊断结果。Stage诊断界面左侧DAG流程图显示三个Stage的依赖关系:Stage[0](耗时0ms)→ Stage[1] Gather(耗时11.0ms, 0.16%)→ Stage[2] Repartition(耗时7.03s, 99.84%)。右侧Top10耗时/内存倒序表格中Stage[2]占比99.84%并标记红色警告。诊断结果为Stage输入数据倾斜,shuffle数据量为0B,表扫描数据量的倾斜率异常,可单击相关文档链接查看解决方案。

    • 查看算子(Operator)级别的诊断结果

      1. 将鼠标移动到目标Stage上,在弹出的信息框中单击查看Stage计划,进入对应Stage的计划详情页。

      2. Stage计划详情页,单击执行计划树中某个算子(如TableScan[3]),即可在右侧查看对应算子的诊断结果详情。更多详情,请参见算子级别诊断结果。进入 Stage 计划详情页后,DAG 图中存在问题的算子(如 TableScan[3])会以高亮标注并显示感叹号图标。单击该算子可在右下方诊断结果面板中查看具体问题,例如表扫描的字段个数过多表扫描存在数据倾斜(倾斜比 1.10),面板中同时提供优化方案链接。页面右上方还显示 Top10 耗时/内存倒序表格,帮助定位性能瓶颈算子。