Query Profile记录了查询中涉及的所有工作节点的执行信息。通过Query Profile,您可以进行可视化的分析来快速识别影响StarRocks实例查询性能的瓶颈。
启用Query Profile
如果您当前的实例未启用Query Profile功能,则可以通过将变量enable_profile设置为true以启用Query Profile。
SET enable_profile = true;
-
仅内核版本为2.5.13及以上版本(2.x系列)或者内核版本为3.1.5及以上版本(3.x系列)时,您可以设置全局开启Profile功能,不会对查询性能产生影响。
-
如果您的内核版本低于上述提到的版本,强烈建议您先升级到上述版本再开启Query Profile功能,以免对查询性能产生影响。
Query Profile结构
Query Profile由以下五部分组成:
-
Fragment:执行树。一个查询由一个或多个Fragment组成。
-
FragmentInstance:每个Fragment可以有多个实例,每个实例称为FragmentInstance,分别由不同的计算节点来执行。
-
Pipeline:执行链。一个Pipeline由一组首尾相接的Operator 构成。一个FragmentInstance会被拆分成多个 Pipeline。
-
PipelineDriver:一个Pipeline可以有多个实例,每个实例称为PipelineDriver,以充分利用多个计算核心。
-
Operator:算子。一个 PipelineDriver由多个Operator组成。
可视化Query Profile
StarRocks Manager可视化了Query Profile,整个Profile对应一棵树形结构,树的节点代表聚合后的Operator。单击Operator,可以在页面右侧的选项卡中查看其详细信息;未选中Operator时,右侧展示Query的概览信息。
执行概览
执行详情页面左侧展示可视化执行计划树,各算子节点标注耗时及占比,耗时较高的节点(如 HASH_JOIN)以红色高亮标识,节点间连线标注处理行数;右侧上方展示节点时间占比排序列表,下方展示 Summary 指标概览。
执行详情页面为您展示一些Summary指标,包含执行时间(Execution time)、I/O性能及网络传输数据量等关键信息。
-
Total
指标
说明
Total
查询所消耗的总时间,包括计划、执行和分析阶段的持续时间。
PlannerTotalTime
规划时间(解析SQL、分析、优化、生成执行计划)。
ExecutionWallTime
Query执行时间和BE端执行时间(执行的墙钟时间)。
CollectProfileTime
Profile收集时间(从BE收集Profile指标)。
-
Execution time
指标
说明
ExecutionWallTime
Query执行总耗时。
CumulativeCpuTime
所有BE节点CPU时间的累加和,反映总体CPU资源消耗。
CpuUtilization
CPU利用率 = CumulativeCpuTime / ExecutionWallTime,表示平均使用的CPU核心数。
CumulativeWaitTime
Pipeline的累积等待时间包括调度等待时间(ScheduleTime)和阻塞时间(PendingTime),例如输入队列为空、输出队列满、依赖尚未就绪等情况。
OperatorCumulativetime
所有算子执行时间的累加和,包含IO、网络和计算三部分。
IO
所有 Scan 算子的累积 I/O 时间,包括本地磁盘读取、远程读取以及数据缓存访问等。
-
IO
指标
说明
RawRowsRead
所有SCAN节点实际扫描到的记录行数之和。
DiskReadBytes
所有SCAN执行节点读取的压缩后数据总量之和。
LocalDiskReadBytes
所有Connector Scan执行节点从本地缓存读取的压缩数据大小之和。该指标仅适用于存算分离实例。
RemoteReadBytes
所有Connector Scan执行节点从OSS对象存储读取的压缩数据大小之和。该指标仅适用于存算分离实例。
ResultRows
所有SCAN执行节点输出记录条数总和。
ResultBytes
所有SCAN执行节点读取的数据总量之和。
-
Network
指标
说明
Bytes sent over network
所有Exchange执行节点传输的字节总数,对应BytesSent指标。
Operator
单击Operator,可以在页面右侧查看以下内容:
-
CoreMetrics页签:展示该Operator的核心指标。
-
NodeMetrics页签:展示该Operator的所有指标。
-
Pipeline页签:展示该Operator所属Pipeline指标。该页签的指标仅与调度相关,您无需过多关注。
-
Operator花费的时间比例越大,其对应颜色就越深(支持对执行耗时排名前三的节点标注颜色)。您可以借此轻松确认查询的瓶颈。
-
通过鼠标滚动,或单击放大和缩小按钮,可以放大和缩小Profile树。
重要指标
Query级别
-
Summary指标
指标
说明
Total
查询消耗的总时间,包括Planning、Executing和Profiling阶段的耗时。
QueryCpuCost
查询累积CPU使用时间。所有并发进程累加,因此该指标会大于实际的执行时间。
QueryMemCost
查询总内存消耗。
Variables
查询相关的变量。
-
Pipeline级别
指标
说明
ActiveTime
Driver执行时间。
DriverTotalTime
Driver消耗的总时间。
PendingTime
Driver因为输入或者前置条件不满足等待的时间。
Operator级别
-
Operator通用指标和Chunk Accumulate
指标
说明
OperatorTotalTime
Operator消耗的总时间。
PushRowNum
Operator累积输出行数。
PullRowNum
Operator累积输入行数。
PullChunkNum
Operator累积输入Chunk数。
PushChunkNum
Operator累积输出Chunk数。
PeakMemoryUsage
Operator最大内存使用量。
-
OLAP Scan Operator
指标
说明
Table
表名称。
ScanTime
Scan累计时间。Scan操作在异步I/O线程池中完成。
TabletCount
Tablet数量。
PushdownPredicates
下推的谓词数量。
BytesRead
读取数据的大小。
CompressedBytesRead
读取压缩数据的大小。
IOTime
累计I/O时间。
BitmapIndexFilterRows
Bitmap索引过滤的数据行数。
BloomFilterFilterRows
Bloomfilter过滤的数据行数。
SegmentRuntimeZoneMapFilterRows
Runtime Zone Map过滤的数据行数。
SegmentZoneMapFilterRows
Zone Map过滤的数据行数。
ShortKeyFilterRows
Short Key过滤的数据行数。
ZoneMapIndexFilterRows
Zone Map索引过滤的数据行数。
-
Connector Scan Operator
以下指标是在OLAP Scan Operator的基础上增加的,适用于存算分离实例。
指标
说明
CompressedBytesReadLocalDisk
从计算节点的本地缓存读取的经过压缩后的数据量。
CompressedBytesReadRemote
从OSS读取的经过压缩的数据总量。
IOTimeLocalDisk
从本地缓存读取数据时所产生的I/O操作耗时。
IOTimeRemote
从OSS读取数据时所产生的I/O操作耗时。
-
Exchange Operator
-
Sink
指标
说明
PartType
数据分布模式,包括UNPARTITIONED、RANDOM、HASH_PARTITIONED和BUCKET_SHUFFLE_HASH_PARTITIONED。
BytesSent
发送的数据大小。
OverallThroughput
吞吐速率。
NetworkTime
数据包传输时间(不包括接收后处理时间)。
WaitTime
由于发送端队列满而导致的等待时间。
NetworkBandwidth
网络带宽。
-
Source
指标
说明
SenderWaitLockTime
等锁时间。
BytesReceived
接收的数据大小。
DecompressChunkTime
解压时间。
DeserializeChunkTime
反序列化时间。
SenderTotalTime
发送总时间。
-
-
Aggregate Operator
指标
说明
GroupingKeys
GROUP BY列。
AggregateFunctions
聚合函数。
AggComputeTime
聚合函数计算耗时。
ExprComputeTime
表达式计算耗时。
HashTableSize
Hash Table大小。
-
Join Operator
-
Probe
指标
说明
DistributionMode
数据分布模式。
JoinType
Join类型。
OtherJoinConjunctEvaluateTime
其他JoinConjunct耗时。
ProbeConjunctEvaluateTime
Probe Conjunct耗时。
SearchHashTableTime
查询Hash Table耗时。
WhereConjunctEvaluateTime
Where Conjunct耗时。
-
Build
指标
说明
JoinPredicates
Join谓词。
JoinType
Join类型。
BuildBuckets
Hash Table的Bucket数量。
BuildHashTableTime
构建Hash Table耗时。
RuntimeFilterBuildTime
Runtime Filter构建时间。
RuntimeFilterNum
Runtime Filter个数。
DistributionMode
数据分布模式。
-
-
Window Function Operator
指标
说明
ComputeTime
窗口函数计算耗时。
PartitionKeys
分区列。
AggregateFunctions
聚合函数。
-
Sort Operator
指标
说明
SortKeys
排序键。
SortType
查询结果排序方式:全排序或者排序Top N个结果。
MergingTime
数据合并耗时。
SortingTime
数据排序耗时。
-
TableFunction Operator
指标
说明
TableFunctionExecTime
Table Function计算耗时。
TableFunctionExecCount
Table Function执行次数。
-
Project Operator
指标
说明
ExprComputeTime
表达式计算耗时。
CommonSubExprComputeTime
公共子表达式计算耗时。
-
LocalExchange Operator
指标
说明
Type
Local Exchange类型,包括:Passthrough、Partition以及Broadcast。
ShuffleNum
Shuffle数量。该指标仅当Type为Partition时有效。
相关文档
如果您想有效地查看和解读Query Profile以优化StarRocks查询性能,详情请参见Query Profile性能诊断及优化案例。