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執行節點從OSSObject Storage Service讀取的壓縮資料大小之和。該指標僅適用於存算分離執行個體。
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
視窗Function Compute耗時。
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時有效。