查询详情页面通过数字和表格的形式展示Query级别、Stage级别和Task级别的实际执行过程中生成的统计信息,包括耗时、CPU Time、内存以及扫描或者从网络接收的数据行数和数据量等信息。有关查询性能问题定位的更多信息,可参见如何诊断慢查询

说明 从3.1.2版本开始支持该功能。有关版本信息的查看方法,可参见如何查看实例版本信息

Query级别统计信息

查询基本信息
可以看到查询的最终状态、执行用户的用户名、客户端IP地址、连接所使用的数据库名以及总的Stage和Task个数等基本信息,如下图所示:查询基本信息
查询时间信息
可以看到查询相关的时间信息,例如查询的提交时间、查询从提交到结果返回的总时间、查询的在正式开始执行前的排队时间以及查询生成执行计划的耗时等,如下图所示:查询时间信息
资源使用信息
可以看到查询使用的资源信息,包括CPU耗时和峰值内存,如下图所示:资源使用信息

SQL语句

SQL语句

Stage级别统计信息

Stage级别统计信息
State
State表示一个Stage的最终执行状态:FINISHED(成功)、CANCELED(被取消)、FAILED(失败)。
Operator Cost
一个Stage所有Task的所有算子的CPU耗时的累加值,和该Query内其他Stage的Operator Cost比较可以用来判断计算量较大的Stage。
Peak Memory
一个Stage在执行过程中使用的峰值内存大小,和该Query内其他Stage的Peak Memory比较可以用来判断消耗内存较大的Stage。
CPU Time
Stage分布在计算节点的Task的算子在计算时消耗的CPU时间的最大值、最小值和平均值,可用来初步判断该Stage在处理数据时是否存在长尾,出现长尾的可能原因是每个Task处理的数据量存在差异或者某些计算节点压力增大导致的。
Input Size
Stage的所有Task的输入数据量的最大值、最小值和平均值,可以用来初步判断该Stage要处理的数据量是否存在倾斜,数据量的倾斜会导致CPU Time的长尾,数据倾斜的可能原因包括表的分布键选择不合理或者数据重分布时的分布键存在倾斜。
Scan Size
Stage如果存在数据源算子(tablescan),那么该字段表示各个Task在扫描数据量上的的最大值、最小值和平均值,如果这三个值差异较大,则说明某些表在数据源存在分布键选择不合理的可能。但是注意一个Stage可能存在多个tablescan算子,会从不同的表中读取数据。
Scan Time
Stage如果存在数据源算子(tablescan),那么该字段表示各个Task在从数据源读取数据耗时的最大值、最小值和平均值,如果这三个值存在较大差异,可能是由于分布键选择不合理导致数据倾斜,也可能是执行节点压力不均导致的。

Task级别统计信息

点击Stage上每个表格的某行的任意位置,可以在Task详情表中查看该Stage的所有Task的详细指标信息,这些指标信息包括:Task详情Task详情1
State
State表示一个Task的最终执行状态:FINISHED(成功);CANCELED(被取消);FAILED(失败)。
ElapsedTime
AnalyticDB的Task内部是多线程并行处理数据分片。ElapsedTime表示的是Task从启动到最后一个线程处理完数据分片的时间。如下图所示,共4个线程参与某个Task的数据处理任务,ElapsedTime就是T2 - T1得到的结果:ElapsedTime
Peak Memory
表示某个Task在处理数据时使用内存的峰值。
Operator Cost
表示某个Task在处理数据时使用的CPU Time的总和,是个累加值。如上图所示的Task的Operator Cost即为:
OperatorCost = 100ms + 110ms + 70ms + 90ms
Input Rows/ Input Size
表示每个Task的输入数据的总行数和总数据量。
Output Rows/Output Size
表示每个Task的输出数据的总行数和总数据量。
Scan Rows/Scan Size/ScanCost
如果某个Task包含从源表读取数据的算子,那么这三个指标分别表示扫描的数据行数/扫描的数据量/扫描的总耗时。