このトピックでは、のクエリプロセスと実行計画に関連する用語について説明します。
クエリプロセス
はSQL文を使用して、システムに保存されているデータを管理します。 このセクションでは、SQLクエリの実行プランを生成するプロセスについて説明します。
- クライアントは、のフロントエンドアクセスノードであるコントローラノードにSQL文を送信します。 アクセスノードの詳細については、「技術アーキテクチャ」をご参照ください。
- コントローラノードのパーサは、SQLステートメントを構文解析して構文ツリーを生成し、次いで、予備論理実行プランを生成する。
- コントローラノードのオプティマイザは、予備論理実行プランを最適化して書き換える必要があるかどうかを評価し、最終論理実行プランを生成し、次いで、ネットワーク伝送要件に基づいてプランを分割する必要があるかどうかを判定する。 論理実行プランでは、結合タイプ、結合順序、集約方法、データ再配布方法などの実行方法が指定されます。
- 実行ノードは、最終論理実行プランを受信し、それを物理実行プランに変換する。 物理実行計画は、特定のルールに基づいてデータを処理するために使用されるステージと演算子で構成されます。
- executorノードは、最終的なデータ処理結果をクライアントに返すか、テーブルやObject storage Service (OSS) などの外部ストレージシステムに結果を書き込みます。
実行計画に関連する条件
次の用語は、の物理的な実行計画をより適切に分析するのに役立ちます。
- ステージ実行フェーズでは、内のクエリが最初に複数のステージに分割されます。 ステージは、実行プランの物理的な部分です。 ステージのデータは、基礎となるストレージシステムから来ることができ、またはネットワークを介して転送することができる。 ステージは、異なる実行ノードに分散された同じタイプのタスクで構成されます。 複数のタスクがデータを並列に処理できます。注 のSQL診断機能を使用すると、ステージレベルで結果を診断できます。 詳細については、「t2101551.html#concept_2101551」をご参照ください。
- タスク
タスクは、エグゼキュータノード上のステージの実行エンティティである。 ステージは、同じタイプの複数のタスクで構成されます。 タスクは、クラスタ内のデータを処理するために並列に実行される。
- 演算子オペレータは、の基本的なデータ処理ユニットです。 は、演算子によって表されるセマンティクスまたは演算子間の依存関係に基づいて、データをパラレルモードで処理するかシリアルモードで処理するかを決定します。注 のSQL診断機能を使用すると、オペレータレベルで結果を診断できます。 詳細については、「t2101552.html#concept_2101552」をご参照ください。
上の図は、グループ集約クエリの実行プロセスを示しています。 のコントローラーノードは、クエリの論理実行プランシャードをタスクを実行する各ノードに分散します。
- ステージ2は、データのスキャン、フィルタリング、および部分集約を並行して実行する4つのタスクで構成されます。
- ステージ1は、最終集約を並列に実行する2つのタスクからなる。
- ステージ0は、ステージ1の2つのタスクから生成された最終集計結果を収集する1つのタスクで構成されます。