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的概览信息。
执行概览
执行概览页面为您展示一些Summary指标,包含执行时间(Execution time)、I/O性能及网络传输数据量等关键信息。
Execution time
指标
说明
IO
所有SCAN节点IO耗时之和。
LocalDiskReadIOTime
从本地缓存读取数据产生的I/O耗时。该指标仅适用于存算分离实例。
RemoteReadIOTime
从远端OSS读取数据产生的I/O耗时。该指标仅适用于存算分离实例。
IoSeekTime
IO Seek寻址过程产生的总耗时。该指标仅适用于存算分离实例。
Processing
Operator节点用于记录其执行计算操作的总耗时。
ExecutionWallTime
Query执行总耗时。
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,可以在页面右侧查看以下内容:
节点页签:展示该Operator的核心指标。
节点详情页签:展示该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查询性能,详情请参见Profile性能诊断及优化案例。