メインコンテンツまでスキップ
バージョン: Candidate-3.5

Query Profile Metrics

StarRocks Query Profile によって生成される生のメトリクスの権威あるリファレンスで、オペレーターごとにグループ化されています。
用語集として使用してください。トラブルシューティングのガイダンスについては、query_profile_tuning_recipes.md にジャンプしてください。

Summary Metrics

クエリ実行に関する基本情報:

MetricDescription
Totalクエリによって消費された総時間。プランニング、実行、およびプロファイリングフェーズの期間を含みます。
Query Stateクエリの状態。可能な状態には、Finished、Error、Running があります。
Query IDクエリの一意の識別子。
Start Timeクエリが開始されたタイムスタンプ。
End Timeクエリが終了したタイムスタンプ。
Totalクエリの総期間。
Query Typeクエリのタイプ。
Query Stateクエリの現在の状態。
StarRocks Version使用された StarRocks のバージョン。
Userクエリを実行したユーザー。
Default Dbクエリに使用されたデフォルトのデータベース。
Sql Statement実行された SQL ステートメント。
Variablesクエリに使用された重要な変数。
NonDefaultSessionVariablesクエリに使用された非デフォルトのセッション変数。
Collect Profile Timeプロファイルを収集するのにかかった時間。
IsProfileAsyncプロファイル収集が非同期であったかどうかを示します。

Planner Metrics

プランナーの包括的な概要を提供します。通常、プランナーに費やされる総時間が10ms未満であれば、問題はありません。

特定のシナリオでは、プランナーがより多くの時間を必要とする場合があります:

  1. 複雑なクエリは、最適な実行プランを確保するために、解析と最適化に追加の時間を必要とする場合があります。
  2. 多数のマテリアライズドビューが存在する場合、クエリの書き換えに必要な時間が増加する可能性があります。
  3. 複数の同時クエリがシステムリソースを使い果たし、クエリキューが使用される場合、Pending 時間が延長される可能性があります。
  4. 外部テーブルを含むクエリは、外部メタデータサーバーとの通信に追加の時間を要する可能性があります。

Example:

     - -- Parser[1] 0
- -- Total[1] 3ms
- -- Analyzer[1] 0
- -- Lock[1] 0
- -- AnalyzeDatabase[1] 0
- -- AnalyzeTemporaryTable[1] 0
- -- AnalyzeTable[1] 0
- -- Transformer[1] 0
- -- Optimizer[1] 1ms
- -- MVPreprocess[1] 0
- -- MVTextRewrite[1] 0
- -- RuleBaseOptimize[1] 0
- -- CostBaseOptimize[1] 0
- -- PhysicalRewrite[1] 0
- -- DynamicRewrite[1] 0
- -- PlanValidate[1] 0
- -- InputDependenciesChecker[1] 0
- -- TypeChecker[1] 0
- -- CTEUniqueChecker[1] 0
- -- ColumnReuseChecker[1] 0
- -- ExecPlanBuild[1] 0
- -- Pending[1] 0
- -- Prepare[1] 0
- -- Deploy[1] 2ms
- -- DeployLockInternalTime[1] 2ms
- -- DeploySerializeConcurrencyTime[2] 0
- -- DeployStageByStageTime[6] 0
- -- DeployWaitTime[6] 1ms
- -- DeployAsyncSendTime[2] 0
- DeployDataSize: 10916
Reason:

Execution Overview Metrics

高レベルの実行統計:

MetricDescriptionRule of Thumb
FrontendProfileMergeTimeFE 側のプロファイル処理時間< 10ms 正常
QueryAllocatedMemoryUsageノード全体で割り当てられたメモリの合計
QueryDeallocatedMemoryUsageノード全体で解放されたメモリの合計
QueryPeakMemoryUsagePerNodeノードごとの最大ピークメモリ< 80% 容量正常
QuerySumMemoryUsageノード全体でのピークメモリの合計
QueryExecutionWallTime実行のウォールタイム
QueryCumulativeCpuTimeノード全体での CPU 時間の合計walltime * totalCpuCores と比較
QueryCumulativeOperatorTimeオペレーター実行時間の合計オペレーター時間の割合の分母
QueryCumulativeNetworkTimeExchange ノードのネットワーク時間の合計
QueryCumulativeScanTimeScan ノードの IO 時間の合計
QueryPeakScheduleTime最大パイプラインスケジュール時間単純なクエリでは < 1s 正常
QuerySpillBytesディスクにスピルされたデータ< 1GB 正常

Fragment Metrics

フラグメントレベルの実行詳細:

MetricDescription
InstanceNumFragmentInstances の数
InstanceIdsすべての FragmentInstances の ID
BackendNum参加している BEs の数
BackendAddressesBE のアドレス
FragmentInstancePrepareTimeフラグメント準備フェーズの期間
InstanceAllocatedMemoryUsageインスタンスに割り当てられたメモリの合計
InstanceDeallocatedMemoryUsageインスタンスで解放されたメモリの合計
InstancePeakMemoryUsageインスタンス全体でのピークメモリ

Pipeline Metrics

パイプラインの実行詳細と関係:

profile_pipeline_time_relationship

主要な関係:

  • DriverTotalTime = ActiveTime + PendingTime + ScheduleTime
  • ActiveTime = ∑ OperatorTotalTime + OverheadTime
  • PendingTime = InputEmptyTime + OutputFullTime + PreconditionBlockTime + PendingFinishTime
  • InputEmptyTime = FirstInputEmptyTime + FollowupInputEmptyTime
MetricDescription
DegreeOfParallelismパイプライン実行の並行性の度合い。
TotalDegreeOfParallelism並行性の度合いの合計。同じパイプラインが複数のマシンで実行される可能性があるため、この項目はすべての値を集計します。
DriverPrepareTime準備フェーズにかかった時間。このメトリクスは DriverTotalTime に含まれません。
DriverTotalTime準備フェーズに費やされた時間を除くパイプラインの総実行時間。
ActiveTime各オペレーターの実行時間や、has_output、need_input などのメソッドを呼び出す際のフレームワーク全体のオーバーヘッドを含むパイプラインの実行時間。
PendingTimeさまざまな理由でスケジュールされることを妨げられたパイプラインの時間。
InputEmptyTime入力キューが空であるためにブロックされたパイプラインの時間。
FirstInputEmptyTime入力キューが空であるために最初にブロックされたパイプラインの時間。最初のブロック時間は、主にパイプラインの依存関係によって引き起こされるため、別途計算されます。
FollowupInputEmptyTime入力キューが空であるためにその後ブロックされたパイプラインの時間。
OutputFullTime出力キューが満杯であるためにブロックされたパイプラインの時間。
PreconditionBlockTime依存関係が満たされていないためにブロックされたパイプラインの時間。
PendingFinishTime非同期タスクの終了を待つためにブロックされたパイプラインの時間。
ScheduleTime準備キューに入ってから実行のためにスケジュールされるまでのパイプラインのスケジュール時間。
BlockByInputEmptyInputEmpty のためにパイプラインがブロックされた回数。
BlockByOutputFullOutputFull のためにパイプラインがブロックされた回数。
BlockByPrecondition未満の前提条件のためにパイプラインがブロックされた回数。

Operator Metrics

MetricDescription
PrepareTime準備に費やされた時間。
OperatorTotalTimeオペレーターによって消費された総時間。次の式を満たします: OperatorTotalTime = PullTotalTime + PushTotalTime + SetFinishingTime + SetFinishedTime + CloseTime。準備に費やされた時間は含まれません。
PullTotalTimeオペレーターが push_chunk を実行するのに費やす総時間。
PushTotalTimeオペレーターが pull_chunk を実行するのに費やす総時間。
SetFinishingTimeオペレーターが set_finishing を実行するのに費やす総時間。
SetFinishedTimeオペレーターが set_finished を実行するのに費やす総時間。
PushRowNumオペレーターの入力行の累積数。
PullRowNumオペレーターの出力行の累積数。
JoinRuntimeFilterEvaluateジョインランタイムフィルターが評価された回数。
JoinRuntimeFilterHashTimeジョインランタイムフィルターのハッシュを計算するのに費やされた時間。
JoinRuntimeFilterInputRowsジョインランタイムフィルターの入力行数。
JoinRuntimeFilterOutputRowsジョインランタイムフィルターの出力行数。
JoinRuntimeFilterTimeジョインランタイムフィルターに費やされた時間。

Scan Operator

OLAP Scan Operator

OLAP_SCAN オペレーターは、StarRocks 内部テーブルからデータを読み取る役割を担っています。

MetricDescription
Tableテーブル名。
Rollupマテリアライズドビュー名。マテリアライズドビューがヒットしない場合、テーブル名と同じです。
SharedScanenable_shared_scan セッション変数が有効かどうか。
TabletCountタブレットの数。
MorselsCountモーセルの数。これは基本的な IO 実行単位です。
PushdownPredicatesプッシュダウン述語の数。
Predicates述語式。
BytesRead読み取られたデータのサイズ。
CompressedBytesReadディスクから読み取られた圧縮データのサイズ。
UncompressedBytesReadディスクから読み取られた非圧縮データのサイズ。
RowsRead読み取られた行数(述語フィルタリング後)。
RawRowsRead読み取られた生の行数(述語フィルタリング前)。
ReadPagesNum読み取られたページ数。
CachedPagesNumキャッシュされたページ数。
ChunkBufferCapacityチャンクバッファの容量。
DefaultChunkBufferCapacityチャンクバッファのデフォルト容量。
PeakChunkBufferMemoryUsageチャンクバッファのピークメモリ使用量。
PeakChunkBufferSizeチャンクバッファのピークサイズ。
PrepareChunkSourceTimeチャンクソースの準備に費やされた時間。
ScanTime累積スキャン時間。スキャン操作は非同期 I/O スレッドプールで完了します。
IOTaskExecTimeIO タスクの実行時間。
IOTaskWaitTimeIO タスクのスケジュール実行までの成功した提出からの待機時間。
SubmitTaskCountIO タスクが提出された回数。
SubmitTaskTimeタスク提出に費やされた時間。
PeakIOTasksIO タスクのピーク数。
PeakScanTaskQueueSizeIO タスクキューのピークサイズ。

Connector Scan Operator

OLAP_SCAN オペレーターに似ていますが、Iceberg/Hive/Hudi/Detal などの外部テーブルをスキャンするために使用されます。

MetricDescription
DataSourceTypeデータソースタイプ。HiveDataSource、ESDataSource などが含まれます。
Tableテーブル名。
TabletCountタブレットの数。
MorselsCountモーセルの数。
Predicates述語式。
PredicatesPartitionパーティションに適用される述語式。
SharedScanenable_shared_scan セッション変数が有効かどうか。
ChunkBufferCapacityチャンクバッファの容量。
DefaultChunkBufferCapacityチャンクバッファのデフォルト容量。
PeakChunkBufferMemoryUsageチャンクバッファのピークメモリ使用量。
PeakChunkBufferSizeチャンクバッファのピークサイズ。
PrepareChunkSourceTimeチャンクソースの準備にかかった時間。
ScanTimeスキャンの累積時間。スキャン操作は非同期 I/O スレッドプールで完了します。
IOTaskExecTimeI/O タスクの実行時間。
IOTaskWaitTimeIO タスクのスケジュール実行までの成功した提出からの待機時間。
SubmitTaskCountIO タスクが提出された回数。
SubmitTaskTimeタスク提出にかかった時間。
PeakIOTasksIO タスクのピーク数。
PeakScanTaskQueueSizeIO タスクキューのピークサイズ。

Exchange Operator

Exchange Operator は BE ノード間でデータを送信する役割を担っています。いくつかの種類の交換操作があります: GATHER/BROADCAST/SHUFFLE。

Exchange Operator がクエリのボトルネックになる可能性のある典型的なシナリオ:

  1. Broadcast Join: これは小さなテーブルに適した方法です。しかし、例外的な場合にオプティマイザーが最適でないクエリプランを選択すると、ネットワーク帯域幅が大幅に増加する可能性があります。
  2. Shuffle Aggregation/Join: 大きなテーブルをシャッフルすると、ネットワーク帯域幅が大幅に増加する可能性があります。

Exchange Sink Operator

MetricDescription
ChannelNumチャネルの数。通常、チャネルの数は受信者の数と等しいです。
DestFragments目的地の FragmentInstance ID のリスト。
DestID目的地のノード ID。
PartTypeデータ分配モード。UNPARTITIONED、RANDOM、HASH_PARTITIONED、BUCKET_SHUFFLE_HASH_PARTITIONED などが含まれます。
SerializeChunkTimeチャンクをシリアライズするのにかかった時間。
SerializedBytesシリアライズされたデータのサイズ。
ShuffleChunkAppendCounterPartType が HASH_PARTITIONED または BUCKET_SHUFFLE_HASH_PARTITIONED の場合のチャンク追加操作の回数。
ShuffleChunkAppendTimePartType が HASH_PARTITIONED または BUCKET_SHUFFLE_HASH_PARTITIONED の場合のチャンク追加操作にかかった時間。
ShuffleHashTimePartType が HASH_PARTITIONED または BUCKET_SHUFFLE_HASH_PARTITIONED の場合のハッシュ計算にかかった時間。
RequestSent送信されたデータパケットの数。
RequestUnsent送信されなかったデータパケットの数。このメトリクスはショートサーキットロジックがある場合にゼロ以外になります。それ以外の場合はゼロです。
BytesSent送信されたデータのサイズ。
BytesUnsent送信されなかったデータのサイズ。このメトリクスはショートサーキットロジックがある場合にゼロ以外になります。それ以外の場合はゼロです。
BytesPassThrough目的地のノードが現在のノードである場合、データはネットワークを介して送信されず、パススルーデータと呼ばれます。このメトリクスはそのようなパススルーデータのサイズを示します。パススルーは enable_exchange_pass_through によって制御されます。
PassThroughBufferPeakMemoryUsageパススルーバッファのピークメモリ使用量。
CompressTime圧縮時間。
CompressedBytes圧縮されたデータのサイズ。
OverallThroughputスループットレート。
NetworkTimeデータパケットの送信にかかった時間(受信後の処理時間を除く)。
NetworkBandwidth推定ネットワーク帯域幅。
WaitTime送信者キューが満杯のための待機時間。
OverallTime送信プロセス全体の総時間、つまり最初のデータパケットの送信から最後のデータパケットの正しい受信の確認まで。
RpcAvgTimeRPC の平均時間。
RpcCountRPC の総数。

Exchange Source Operator

MetricDescription
RequestReceived受信したデータパケットのサイズ。
BytesReceived受信したデータのサイズ。
DecompressChunkTimeチャンクを解凍するのにかかった時間。
DeserializeChunkTimeチャンクをデシリアライズするのにかかった時間。
ClosureBlockCountブロックされたクロージャの数。
ClosureBlockTimeクロージャのブロックされた時間。
ReceiverProcessTotalTime受信側の処理にかかった総時間。
WaitLockTimeロック待機時間。

Aggregate Operator

Metrics List

MetricDescription
GroupingKeysGROUP BY カラム。
AggregateFunctions集計関数の計算にかかった時間。
AggComputeTimeAggregateFunctions + Group By の時間。
ChunkBufferPeakMemチャンクバッファのピークメモリ使用量。
ChunkBufferPeakSizeチャンクバッファのピークサイズ。
ExprComputeTime式の計算にかかった時間。
ExprReleaseTime式の解放にかかった時間。
GetResultsTime集計結果を抽出するのにかかった時間。
HashTableSizeハッシュテーブルのサイズ。
HashTableMemoryUsageハッシュテーブルのメモリサイズ。
InputRowCount入力行数。
PassThroughRowCount自動モードで、低集計後にストリーミングモードに劣化した場合のストリーミングモードで処理されたデータ行数。
ResultAggAppendTime集計結果カラムを追加するのにかかった時間。
ResultGroupByAppendTimeGroup By カラムを追加するのにかかった時間。
ResultIteratorTimeハッシュテーブルを反復するのにかかった時間。
StreamingTimeストリーミングモードでの処理時間。

Join Operator

Metrics List

MetricDescription
DistributionMode分配タイプ。BROADCAST、PARTITIONED、COLOCATE などが含まれます。
JoinPredicatesジョイン述語。
JoinTypeジョインタイプ。
BuildBucketsハッシュテーブルのバケット数。
BuildKeysPerBucketハッシュテーブルのバケットごとのキー数。
BuildConjunctEvaluateTimeビルドフェーズ中の結合評価にかかった時間。
BuildHashTableTimeハッシュテーブルの構築にかかった時間。
ProbeConjunctEvaluateTimeプローブフェーズ中の結合評価にかかった時間。
SearchHashTableTimerハッシュテーブルを検索するのにかかった時間。
CopyRightTableChunkTime右テーブルからチャンクをコピーするのにかかった時間。
OutputBuildColumnTimeビルド側のカラムを出力するのにかかった時間。
OutputProbeColumnTimeプローブ側のカラムを出力するのにかかった時間。
HashTableMemoryUsageハッシュテーブルのメモリ使用量。
RuntimeFilterBuildTimeランタイムフィルターの構築にかかった時間。
RuntimeFilterNumランタイムフィルターの数。

Window Function Operator

MetricDescription
ProcessMode実行モード。Materializing と Streaming の2つの部分を含みます。さらに、Cumulative、RemovableCumulative、ByDefinition も含まれます。
ComputeTimeウィンドウ関数の計算にかかった時間。
PartitionKeysパーティションカラム。
AggregateFunctions集計関数。
ColumnResizeTimeカラムのリサイズにかかった時間。
PartitionSearchTimeパーティション境界を検索するのにかかった時間。
PeerGroupSearchTimeピアグループ境界を検索するのにかかった時間。ウィンドウタイプが RANGE の場合にのみ意味があります。
PeakBufferedRowsバッファ内のピーク行数。
RemoveUnusedRowsCount未使用のバッファが削除された回数。
RemoveUnusedTotalRows未使用のバッファから削除された行の総数。

Sort Operator

MetricDescription
SortKeysソートキー。
SortTypeクエリ結果のソート方法: フルソートまたはトップ N 結果のソート。
MaxBufferedBytesバッファされたデータのピークサイズ。
MaxBufferedRowsバッファされた行のピーク数。
NumSortedRunsソートされたランの数。
BuildingTimeソート中に内部データ構造を維持するのにかかった時間。
MergingTimeソート中にソートされたランをマージするのにかかった時間。
SortingTimeソートにかかった時間。
OutputTime出力ソートシーケンスを構築するのにかかった時間。

Merge Operator

MetricDescriptionLevel
Limitリミット。Primary
Offsetオフセット。Primary
StreamingBatchSizeストリーミングモードでマージが実行される場合のマージ操作ごとに処理されるデータのサイズPrimary
LateMaterializationMaxBufferChunkNum後期実体化が有効な場合のバッファ内の最大チャンク数。Primary
OverallStageCountすべてのステージの総実行回数。Primary
OverallStageTime各ステージの総実行時間。Primary
1-InitStageCountInit ステージの実行回数。Secondary
2-PrepareStageCountPrepare ステージの実行回数。Secondary
3-ProcessStageCountProcess ステージの実行回数。Secondary
4-SplitChunkStageCountSplitChunk ステージの実行回数。Secondary
5-FetchChunkStageCountFetchChunk ステージの実行回数。Secondary
6-PendingStageCountPending ステージの実行回数。Secondary
7-FinishedStageCountFinished ステージの実行回数。Secondary
1-InitStageTimeInit ステージの実行時間。Secondary
2-PrepareStageTimePrepare ステージの実行時間。Secondary
3-ProcessStageTimeProcess ステージの実行時間。Secondary
4-SplitChunkStageTimeSplit ステージにかかった時間。Secondary
5-FetchChunkStageTimeFetch ステージにかかった時間。Secondary
6-PendingStageTimePending ステージにかかった時間。Secondary
7-FinishedStageTimeFinished ステージにかかった時間。Secondary
LateMaterializationGenerateOrdinalTime後期実体化中に序数カラムを生成するのにかかった時間。Tertiary
SortedRunProviderTimeProcess ステージ中にプロバイダーからデータを取得するのにかかった時間。Tertiary

TableFunction Operator

MetricDescription
TableFunctionExecTimeテーブル関数の計算時間。
TableFunctionExecCountテーブル関数の実行回数。

Project Operator

Project Operator は SELECT <expr> を実行する役割を担っています。クエリに高価な式が含まれている場合、このオペレーターはかなりの時間を要することがあります。

MetricDescription
ExprComputeTime式の計算時間。
CommonSubExprComputeTime共通部分式の計算時間。

LocalExchange Operator

MetricDescription
TypeLocal Exchange のタイプ。PassthroughPartitionBroadcast が含まれます。
ShuffleNumシャッフルの数。このメトリクスは TypePartition の場合にのみ有効です。
LocalExchangePeakMemoryUsageピークメモリ使用量。
LocalExchangePeakBufferSizeバッファのピークサイズ。
LocalExchangePeakBufferMemoryUsageバッファのピークメモリ使用量。
LocalExchangePeakBufferChunkNumバッファ内のピークチャンク数。
LocalExchangePeakBufferRowNumバッファ内のピーク行数。
LocalExchangePeakBufferBytesバッファ内のデータのピークサイズ。
LocalExchangePeakBufferChunkSizeバッファ内のチャンクのピークサイズ。
LocalExchangePeakBufferChunkRowNumバッファ内のチャンクごとのピーク行数。
LocalExchangePeakBufferChunkBytesバッファ内のチャンクごとのデータのピークサイズ。

OlapTableSink Operator

OlapTableSink Operator は INSERT INTO <table> 操作を実行する役割を担っています。

ヒント
  • OlapTableSinkPushChunkNum メトリクスの最大値と最小値の差が大きい場合、上流オペレーターでのデータスキューを示しており、ロードパフォーマンスのボトルネックになる可能性があります。
  • RpcClientSideTimeRpcServerSideTime にネットワーク伝送時間と RPC フレームワーク処理時間を加えたものです。RpcClientSideTimeRpcServerSideTime の間に大きな差がある場合、圧縮を有効にして伝送時間を短縮することを検討してください。
MetricDescription
IndexNum目的地のテーブルに作成された同期マテリアライズドビューの数。
ReplicatedStorageシングルリーダーレプリケーションが有効かどうか。
TxnIDロードトランザクションの ID。
RowsRead上流オペレーターから読み取られた行数。
RowsFilteredデータ品質が不十分なためにフィルタリングされた行数。
RowsReturned目的地のテーブルに書き込まれた行数。
RpcClientSideTimeクライアント側で記録されたロードの総 RPC 時間消費。
RpcServerSideTimeサーバー側で記録されたロードの総 RPC 時間消費。
PrepareDataTimeデータ準備フェーズの総時間消費。データ形式の変換とデータ品質チェックを含みます。
SendDataTimeデータ送信のローカル時間消費。データのシリアライズと圧縮、および送信者キューへのタスクの提出時間を含みます。