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性能診斷及優化案例。