すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:実行プランによるクエリの分析

最終更新日:Jun 06, 2026

AnalyticDB for MySQL の SQL 診断機能は、SQL クエリの実行計画をツリー図として可視化します。実行計画ツリーは、ステージレイヤーとオペレーターレイヤーの 2 つのレイヤーで構成されます。このトピックでは、ステージレイヤーとオペレーターレイヤーの両方で実行計画ツリーを使用してクエリのパフォーマンスを分析する方法について説明します。

ステージレイヤーの実行プランツリー

ステージレイヤーの実行プランツリーは複数のステージノードで構成され、データは下から上に流れます。このプロセスは、データをスキャンするスキャンオペレーターを含むステージから始まります。その後、データは中間ステージを経て処理され、最上部のルートノードがクエリ結果をクライアントに返します。

ステージレイヤーの実行プランツリーは、次の情報を提供します。

  • 基本情報

    図の各矩形はステージを表し、ステージ ID、データ出力タイプ、実行時間またはメモリなどの情報が含まれています。メモリ使用量は、メモリ別 を選択してプランをソートした場合に表示されます。

    説明

    実行プランツリー内のステージに表示される赤い警告アイコンは、そのステージに最適化の可能性があることを示します。

  • 出力行数

    隣接する 2 つのステージを結ぶ線上の数字は、アップストリームステージがダウンストリームステージに出力する行数を表します。出力される行数が多いほど、接続線は太くなります。

  • データ出力方法

    これは、上流ステージと下流ステージ間でデータを転送する方法です。 AnalyticDB for MySQL は、以下のデータ出力方法をサポートしています。

    出力方法

    説明

    ブロードキャスト

    アップストリームステージの各コンピュートノードから、ダウンストリームステージのすべてのコンピュートノードにデータをコピーします。1-1

    リパーティション

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

    ギャザー

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

  • メモリ使用量または実行時間別のトップ 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) を自動的に選択します。

    説明

    このメトリックは、ステージにスキャンオペレーターが含まれている場合にのみ利用できます。

オペレーターレイヤーの実行プランツリー

オペレーターレイヤーの実行プランは複数のオペレーターで構成されます。図内の各長方形はオペレーターを表し、データは下から上に流れます。このプロセスは、ツリーの最下部にある TableScanRemoteSource などのオペレーターから始まります。これらのオペレーターは、データをスキャンするか、ネットワークからデータを受信します。その後、データは中間オペレーターを通過します。最後に、最上部にある StageOutputOutput などのルートオペレーターが、データをダウンストリームステージに送信するか、最終的なクエリ結果をクライアントに返します。

オペレーターレイヤーの実行プランツリーを表示するには、ステージにカーソルを合わせ、ポップアップで ステージプランの表示 をクリックして、そのステージのプラン詳細ページに移動します。

オペレーターレイヤーの実行プランツリーは、次の情報を提供します。

説明

実行プランツリー内のオペレーターに表示される赤い警告アイコンは、そのオペレーターに最適化の可能性があることを示します。

  • 基本情報

    図の各矩形は演算子を表します。これには、演算子名と 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:ネストループ結合計算を実行するために使用されます。

    説明

    このメトリックは、結合演算子でのみ利用できます。

    [プロパティ]

    プロパティはオペレーターのタイプによって異なります。たとえば、結合演算子のプロパティには、結合の種類と方法が含まれます。詳細については、「オペレーター」をご参照ください。