は、SQLクエリの実行プランを階層グラフに表示するSQL診断機能を提供します。 実行計画の階層チャートは、2つのレイヤーで構成されます。 第1の層はステージ層であり、第2の層は演算子層である。 このトピックでは、実行計画階層グラフのステージレイヤーと演算子レイヤーを使用してクエリを分析する方法について説明します。
ステージレイヤの実行プラン階層チャート
実行プラン階層チャートは、ステージ層の複数のステージで構成され、データは下から上に流れます。 まず、スキャン演算子を含むステージがデータをスキャンします。 次いで、データは、複数の中間ステージノードによって処理される。 最后に、最上部のルートノードがクエリ结果をクライアントに返します。
- 基本情報前の図の各四角形はステージを表し、ステージID、データ出力タイプ、および期間または消費メモリなどのステージの情報が含まれています。 メモリ別 を選択すると、メモリ情報が表示されます。注 システムがステージの可能な最適化操作を特定した場合、感嘆符 (!) を含む赤いアイコンが階層チャートのそのステージに表示されます。
- 出力行数
隣接する2つのステージ間のライン上の数字は、上流ステージから下流ステージへの出力行の数を示す。 出力行の数が多いほど、ステージ間のラインは太くなります。
- データ出力方法この方法は、上流から下流への2つの隣接するステージ間でデータを転送するために使用される。 次の表に、でサポートされているデータ出力方法を示します。
データ出力方法 説明 放送 上流ステージにおける各計算ノードのデータは、下流ステージの全ての計算ノードにコピーされる。 再分割 上流ステージにおける各計算ノードのデータは、特定の規則に基づいて分割され、次いで、下流ステージの指定された計算ノードに分配される。 収集 上流ステージの各計算ノードのデータは、下流ステージの特定の計算ノードに集中される。 - メモリ使用量または実行期間で上位10位のステージの詳細を表示右側のTop10時間のかかる/メモリの逆順タブには、上位10ステージのIDと対応する比率が表示されます。 上位10ステージは、総クエリ期間に対する実行期間の最大の割合、または総クエリメモリに対する使用メモリの最大の割合を有する。注
- デフォルトでは、時間消費によるが選択されています。 実行計画階層グラフの右上隅にあるメモリ別を選択することもできます。
- メモリ使用量が1% 未満のステージ、または実行時間比率が1% 未満のステージは、Top10時間のかかる/メモリの逆順タブに表示されません。
- クエリ内のすべてのステージの実行期間の割合またはメモリ使用量の合計は、統計的方法の違いにより100% ではない場合があります。
- 診断結果実行計画階層グラフでstage [1] などのステージをクリックすると、右側の診断結果セクションでステージの次の診断の詳細が表示されます。
- ステージ診断: 診断された問題と対応する最適化ソリューションを含む、ステージ診断結果の詳細な説明を提供します。 これらの問題は、大量のブロードキャストデータまたはデータスキューであり得る。
- Operator Diagnostics: 現在のステージの障害のある演算子とそれに対応する問題の概要を示します。 詳細な説明と最適化ソリューションは、演算子層の実行計画階層チャートでのみ使用できます。 詳細については、「演算子層の実行計画階層グラフ」をご参照ください。
ステージ診断結果の詳細については、「t2101551.html#concept_2101551」をご参照ください。
- 統計情報
診断結果 セクションの下の統計情報セクションには、表示するステージのメトリック統計が表示されます。
メトリック 説明 ピークメモリ ステージによって消費される最大メモリ。 システムは、実際のメモリ消費量に基づいて、単位としてバイト、KB、MB、GB、またはTBを選択します。 累積時間消費 ステージメモリ内のすべての演算子のすべてのノードとスレッドによって消費された累積実行時間。 システムは、実際の持続時間に基づいて単位としてms、s、m、またはhを選択します。 注 この累積期間は、現在のクエリの合計期間と比較することはできません。出力行数 ステージから出力される行数。 出力サイズ ステージから出力されるデータ量。 システムは、実際のデータ量に基づいて、Byte、KB、MB、GB、またはTBを単位として選択します。 行数を入力してください ステージに入力される行数。 入力サイズ ステージに入力されるデータの量。 システムは、実際のデータ量に基づいて、Byte、KB、MB、GB、またはTBを単位として選択します。 スキャン行数 ステージによってスキャンされた行の数。 注 このパラメーターは、ステージにスキャン演算子が含まれている場合にのみ表示されます。スキャンボリューム ステージによってスキャンされたデータの量。 システムは、実際のデータ量に基づいて、Byte、KB、MB、GB、またはTBを単位として選択します。 注 このパラメーターは、ステージにスキャン演算子が含まれている場合にのみ表示されます。
演算子層の実行計画階層グラフ
実行プラン階層チャートは、演算子層の複数の演算子で構成され、データは下から上に流れます。 まず、最も上流のオペレーター (TableScanとRemoteSource) がデータをスキャンするか、ネットワークデータを受信します。 次に、データは複数の中間演算子ノードによって処理されます。 最后に、最上部のルートノード (StageOutputまたはOutput) がクライアントにクエリ结果を返します。
- 基本情報
上の図の各四角形は演算子を表し、演算子の名前、ID、プロパティ (join演算子の結合条件やアルゴリズムなど) 、期間や消費メモリなどの演算子の情報が含まれています。 メモリ別 を選択すると、メモリ情報が表示されます。
- 出力行数
隣接する2つの演算子の間の行の番号は、上流の演算子から下流の演算子に出力される行の数を示します。 出力行の数が多いほど、演算子間の線が太くなります。
- メモリ使用量または実行期間で上位10位の演算子の詳細を表示右側のTop10時間のかかる/メモリの逆順タブには、上位10名の演算子のIDと対応する比率が表示されます。 上位10個の演算子は、総クエリ期間に対する実行期間の最大の割合、または総クエリメモリに対する使用済みメモリの最大の割合を持っています。注
- デフォルトでは、時間消費によるが選択されています。 実行計画階層グラフの右上隅にあるメモリ別を選択することもできます。
- メモリ使用量が1% 未満の演算子、または実行時間比率が1% 未満の演算子は、Top10時間のかかる/メモリの逆順タブに表示されません。
- ステージ内のすべての演算子の実行期間の割合またはメモリ使用量の合計は、統計的方法の違いにより100% ではない場合があります。
- 診断結果右側の診断結果セクションで、演算子の診断の詳細を表示するには、実行計画階層グラフで [36184] などの演算子をクリックします。 診断の詳細は、診断された問題および対応する最適化ソリューションを含む。 これらの問題は、結合におけるデータスキューまたは大きな正しいテーブルである可能性があります。 詳細については、「t2101552.html#concept_2101552」をご参照ください。
- 統計情報
診断結果 セクションの下の統計情報セクションには、表示する演算子のメトリック統計が表示されます。
メトリック 説明 ピークメモリ オペレータが消費する最大メモリ。 システムは、実際のメモリ消費量に基づいて、単位としてバイト、KB、MB、GB、またはTBを選択します。 時間がかかる 特定の同時実行性を持つ演算子の平均期間。 システムは、実際の持続時間に基づいて単位としてms、s、m、またはhを選択します。 注 この期間は、現在のクエリの期間と比較できます。出力行数 演算子から出力される行数。 出力サイズ 演算子から出力されるデータ量。 システムは、実際のデータ量に基づいて、Byte、KB、MB、GB、またはTBを単位として選択します。 行数を入力してください 演算子に入力された行数。 入力サイズ オペレータに入力されるデータの量。 システムは、実際のデータ量に基づいて、Byte、KB、MB、GB、またはTBを単位として選択します。 ビルダー統計 ビルダーの統計 (ビルダーの種類、最大メモリ、期間、入力行数、出力行数、データ量など) 。 次のビルダータイプを使用できます。 - HashBuiler: ハッシュテーブルを構築してハッシュ結合を完了します。
- SetBuilder: 半結合を完了するためのセットを構築します。
- NestLoopBuilder: ネストループ結合 (NLJ) を完了します。
注 このメトリックは、JOIN演算子に対してのみ表示されます。プロパティ 演算子のプロパティ。 異なる演算子は異なる特性を有する。 たとえば、JOIN演算子のプロパティには、joinタイプとjoinメソッドが含まれます。 詳細については、「演算子」をご参照ください。