查看查询属性与诊断结果
AnalyticDB for MySQL的SQL诊断功能可以对SQL查询的Query、Stage和算子(Operator)级别的信息分别进行统计,再在统计信息的基础上进行诊断并提供调优建议。本文介绍如何在AnalyticDB for MySQL控制台上查看目标查询的属性与各级别的诊断结果。
注意事项
德国(法兰克福)、英国(伦敦)、美国(硅谷)和美国(弗吉尼亚)地域的集群暂不支持SQL诊断功能。
查看查询属性
-
进入SQL诊断优化页签。详细操作步骤,请参见进入SQL诊断页签。
-
在SQL诊断优化页签的右上角,根据业务需要选择整体检索条件,例如检索最近5分钟内耗时最长的100个SQL查询。
-
在检索结果的图表中,您可以选择如下任意一种方式进入查询详情页面:
-
方式一
在查询监控区域的趋势图中,每个色块代表一次SQL查询,将鼠标放在色块上可以查看目标查询的相关信息(例如查询开始或结束时间),单击详情即可进入目标查询的详情页面。

-
方式二
在SQL列表页签下,单击目标查询左侧操作栏中的诊断,即可进入目标查询的详情页面。
该列表展示各查询的 SQL、开始时间、查询ID、访问源地址、数据库、状态、耗时和排队耗时等属性。
-
-
在查询详情页面的查询属性区域,可以查看目标查询语句的执行情况,例如扫描数据、返回数据、峰值内存等。
单击页面右上角返回即可回到查询趋势图所在页,查看其它查询的相关信息。
查询属性面板展示查询的元数据信息,包括开始时间、结束时间、用户名、排队耗时、耗时、峰值内存、写表行数、扫描数据(行数和数据量)、查询ID、返回数据(行数和数据量)以及查询状态等字段。
查看诊断结果
-
根据查看查询属性中的步骤进入查询详情页面。
-
在查询详情页面,单击执行计划页签来查看目标查询的执行计划树图。您可以通过执行计划树来查看Query、Stage和Operator级别的诊断结果:
-
查看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)级别的诊断结果
-
将鼠标移动到目标Stage上,在弹出的信息框中单击查看Stage计划,进入对应Stage的计划详情页。
-
在Stage计划详情页,单击执行计划树中某个算子(如TableScan[3]),即可在右侧查看对应算子的诊断结果详情。更多详情,请参见算子级别诊断结果。进入 Stage 计划详情页后,DAG 图中存在问题的算子(如 TableScan[3])会以高亮标注并显示感叹号图标。单击该算子可在右下方诊断结果面板中查看具体问题,例如表扫描的字段个数过多和表扫描存在数据倾斜(倾斜比 1.10),面板中同时提供优化方案链接。页面右上方还显示 Top10 耗时/内存倒序表格,帮助定位性能瓶颈算子。
-
-