AnalyticDB for MySQL の SQL 診断機能は、SQL クエリの実行計画をツリー図として可視化します。実行計画ツリーは、ステージレイヤーとオペレーターレイヤーの 2 つのレイヤーで構成されます。このトピックでは、ステージレイヤーとオペレーターレイヤーの両方で実行計画ツリーを使用してクエリのパフォーマンスを分析する方法について説明します。
ステージレイヤーの実行プランツリー
ステージレイヤーの実行プランツリーは複数のステージノードで構成され、データは下から上に流れます。このプロセスは、データをスキャンするスキャンオペレーターを含むステージから始まります。その後、データは中間ステージを経て処理され、最上部のルートノードがクエリ結果をクライアントに返します。
ステージレイヤーの実行プランツリーは、次の情報を提供します。
-
基本情報
図の各矩形はステージを表し、ステージ ID、データ出力タイプ、実行時間またはメモリなどの情報が含まれています。メモリ使用量は、メモリ別 を選択してプランをソートした場合に表示されます。
説明実行プランツリー内のステージに表示される赤い警告アイコンは、そのステージに最適化の可能性があることを示します。
-
出力行数
隣接する 2 つのステージを結ぶ線上の数字は、アップストリームステージがダウンストリームステージに出力する行数を表します。出力される行数が多いほど、接続線は太くなります。
-
データ出力方法
これは、上流ステージと下流ステージ間でデータを転送する方法です。 AnalyticDB for MySQL は、以下のデータ出力方法をサポートしています。
出力方法
説明
ブロードキャスト
アップストリームステージの各コンピュートノードから、ダウンストリームステージのすべてのコンピュートノードにデータをコピーします。

リパーティション
アップストリームステージの各コンピュートノードからのデータを特定のルールに基づいてパーティション分割し、ダウンストリームステージの指定されたコンピュートノードに配布します。

ギャザー
アップストリームステージの各コンピュートノードから、ダウンストリームステージの単一の特定のコンピュートノードにデータを送信します。

-
メモリ使用量または実行時間別のトップ 10 ステージ
実行プランツリーの右側にある Top10時間のかかる/メモリの逆順 タブには、クエリの総実行時間または総メモリ使用量のうち、最も大きな割合を占めるトップ 10 ステージの ID とそれぞれの割合が一覧表示されます。
説明-
デフォルトでは、ステージは 時間消費による でソートされます。実行プランツリーの右上隅にある メモリ別 を選択することもできます。
-
Top10時間のかかる/メモリの逆順 タブには、メモリ使用量または実行時間が全体の 1% 未満のステージは表示されません。
-
統計方法の違いにより、クエリ内のすべてのステージの実行時間またはメモリの割合の合計が 100% にならない場合があります。
-
-
[診断結果]
実行プランツリーで [Stage[1]] などのステージをクリックすると、右側の 診断結果 ペインにその詳細が表示されます。これには、次の 2 種類の診断が含まれます。
-
ステージ診断:ターゲットステージの診断結果の詳細な説明を提供します。これには、大容量データのブロードキャストやデータスキューなどの特定された問題、および対応する最適化の推奨事項が含まれます。
-
オペレーター診断:現在のステージ内の問題のあるオペレーターの名前と問題の概要のみを表示します。詳細な説明と最適化ソリューションについては、オペレーターレイヤーの実行プランツリーをご参照ください。詳細については、「オペレーターレイヤーの実行プランツリー」をご参照ください。
ステージの診断結果の詳細については、「ステージレベルの診断結果」をご参照ください。
-
-
[統計情報]
診断結果 ペイン下部の 統計情報 セクションには、ターゲットステージのメトリックが表示されます。
メトリック
説明
[ピークメモリ]
ステージが消費したピークメモリ。システムは、実際のメモリ消費量に基づいて、単位 (バイト、KB、MB、GB、または TB) を自動的に選択します。
[累積時間消費]
ステージ内のすべてのオペレーターの実行時間を、すべてのコンピュートノードとスレッドにわたって集計した合計。システムは、実際の実行時間に基づいて、単位 (ms、s、m、または h) を自動的に選択します。
説明この累積時間は、クエリの総実行時間と直接比較することはできません。
[出力行数]
ステージによって出力された行数。
[出力サイズ]
ステージによって出力されたデータのサイズ。システムは、実際のデータサイズに基づいて、単位 (バイト、KB、MB、GB、または TB) を自動的に選択します。
[行数を入力してください]
ステージに入力された行数。
[入力サイズ]
ステージに入力されたデータのサイズ。システムは、実際のデータサイズに基づいて、単位 (バイト、KB、MB、GB、または TB) を自動的に選択します。
[スキャン行数]
ステージによってスキャンされた行数。
説明このメトリックは、ステージにスキャンオペレーターが含まれている場合にのみ利用できます。
[スキャンボリューム]
ステージによってスキャンされたデータのサイズ。システムは、実際のデータサイズに基づいて、単位 (バイト、KB、MB、GB、または TB) を自動的に選択します。
説明このメトリックは、ステージにスキャンオペレーターが含まれている場合にのみ利用できます。
オペレーターレイヤーの実行プランツリー
オペレーターレイヤーの実行プランは複数のオペレーターで構成されます。図内の各長方形はオペレーターを表し、データは下から上に流れます。このプロセスは、ツリーの最下部にある TableScan や RemoteSource などのオペレーターから始まります。これらのオペレーターは、データをスキャンするか、ネットワークからデータを受信します。その後、データは中間オペレーターを通過します。最後に、最上部にある StageOutput や Output などのルートオペレーターが、データをダウンストリームステージに送信するか、最終的なクエリ結果をクライアントに返します。
オペレーターレイヤーの実行プランツリーを表示するには、ステージにカーソルを合わせ、ポップアップで ステージプランの表示 をクリックして、そのステージのプラン詳細ページに移動します。
オペレーターレイヤーの実行プランツリーは、次の情報を提供します。
実行プランツリー内のオペレーターに表示される赤い警告アイコンは、そのオペレーターに最適化の可能性があることを示します。
-
基本情報
図の各矩形は演算子を表します。これには、演算子名と ID、
Join演算子における 結合条件とアルゴリズム などの演算子のプロパティ、および実行時間またはメモリが含まれます。メモリ使用量は、メモリ別 を選択してプランをソートすると表示されます。 -
出力行数
隣接する 2 つのオペレーターを結ぶ線上の数字は、アップストリームオペレーターがダウンストリームオペレーターに出力する行数を表します。出力される行数が多いほど、接続線は太くなります。
-
メモリ使用量または実行時間別のトップ 10 オペレーター
実行プランツリーの右側にある Top10時間のかかる/メモリの逆順 タブには、クエリの総実行時間または総メモリ使用量のうち、最も大きな割合を占めるトップ 10 オペレーターの ID とそれぞれの比率が表示されます。
説明-
デフォルトでは、オペレーターは 時間消費による でソートされます。実行プランツリーの右上隅にある メモリ別 を選択することもできます。
-
Top10時間のかかる/メモリの逆順 タブには、メモリ使用量または実行時間が全体の 1% 未満のオペレーターは表示されません。
-
統計方法の違いにより、ステージ内のすべてのオペレーターの実行時間またはメモリの割合の合計が 100% にならない場合があります。
-
-
[診断結果]
実行計画ツリーで、[Join[36148]] などの演算子をクリックすると、右側の 診断結果 ペインにその詳細が表示されます。 詳細には、データ量の急増や
結合における過大な右テーブルなど、特定された問題と、対応する最適化の推奨事項が含まれます。 演算子の診断の詳細については、「演算子レベルの診断結果」をご参照ください。 -
[統計情報]
診断結果 ペイン下部の 統計情報 セクションには、ターゲットオペレーターのメトリックが表示されます。
メトリック
説明
[ピークメモリ]
オペレーターが消費したピークメモリ。システムは、実際のメモリ消費量に基づいて、単位 (バイト、KB、MB、GB、または TB) を自動的に選択します。
[時間がかかる]
特定の同時実行数レベルでのオペレーターの平均実行時間。システムは、実際の実行時間に基づいて、単位 (ms、s、m、または h) を自動的に選択します。
説明この実行時間は、クエリの総実行時間と比較できます。
[出力行数]
オペレーターが出力した行数。
[出力サイズ]
オペレーターが出力したデータのサイズ。システムは、実際のデータサイズに基づいて、単位 (バイト、KB、MB、GB、または TB) を自動的に選択します。
[行数を入力してください]
オペレーターに入力された行数。
[入力サイズ]
オペレーターに入力されたデータのサイズ。システムは、実際のデータサイズに基づいて、単位 (バイト、KB、MB、GB、または TB) を自動的に選択します。
[ビルダー統計]
ビルダーのタイプ、ピークメモリ、実行時間、入出力行数、データ量などの情報が含まれます。次のビルダータイプが利用可能です。
-
HashBuilder:ハッシュ結合計算のためにハッシュテーブルを構築するために使用されます。 -
SetBuilder:セミ結合計算のためにセット構造を構築するために使用されます。 -
NestLoopBuilder:ネストループ結合計算を実行するために使用されます。
説明このメトリックは、結合演算子でのみ利用できます。
[プロパティ]
プロパティはオペレーターのタイプによって異なります。たとえば、結合演算子のプロパティには、結合の種類と方法が含まれます。詳細については、「オペレーター」をご参照ください。
-