Share via


クエリ プロファイル

クエリ プロファイルを使用すると、クエリの実行の詳細を視覚化できます。 クエリ プロファイルは、クエリの実行中のパフォーマンスに対するボトルネックのトラブルシューティングに役立ちます。 次に例を示します。

  • 各クエリ タスクとそれに関連するメトリック (所要時間、処理された行数、処理された行、メモリ消費量など) を視覚化できます。
  • クエリ実行の最も遅い部分をひとめで特定し、クエリに対する変更の影響を評価できます。
  • 爆発的に増加する結合やフル テーブル スキャンなど、SQL のステートメントでよくある間違いを発見し、修正できます。

重要

SQL クエリのクエリ履歴に記録される時間は、SQL ウェアハウスでクエリの実際の実行に費やされた時間に過ぎません。 内部キューやデータのアップロードおよびダウンロード プロセスに関連する追加の時間など、クエリの実行の準備に関連する追加のオーバーヘッドは記録されません。

要件

クエリ プロファイルを表示するには、クエリの所有者であるか、クエリを実行した SQL ウェアハウスに対する管理可能アクセス許可を持っている必要があります。

クエリ プロファイルを表示する

SQL エディターまたはノートブックでクエリを実行した後、出力の下部にある経過時間をクリックしてクエリ プロファイルを開くことができます。

エディターまたはノートブック出力からクエリ履歴を開く

クエリ履歴からクエリ プロファイルを次のように表示することもできます:

  1. クエリ履歴を表示します。

  2. クエリの名前をクリックします。 クエリ メトリックの概要が表示されます。

    クエリ実行概要の簡易ビュー

  3. [See query profile] (クエリ プロファイルの表示) をクリックします。

    Note

    "クエリ プロファイルを使用できません" が表示される場合、このクエリに使用できるプロファイルはありません。 クエリ キャッシュから実行されるクエリでは、クエリ プロファイルは使用できません。 クエリ キャッシュを回避するには、LIMIT の変更や削除など、わずかな変更をクエリに加えます。

  4. グラフ ビュー (既定) でクエリ プロファイルを表示するには、[グラフ ビュー] をクリックします。 クエリ プロファイルをツリーとして表示するには、[ツリー ビュー] をクリックします。

    • グラフ ビューは、あるノードから別のノードにデータがどのように流れるかを視覚化するために最適化されています。
    • ツリー ビューは、実行時間が最も長い演算子の特定など、クエリのパフォーマンスに関する問題をすばやく見つけるために最適化されています。
  5. グラフ ビューまたはツリー ビューで、ページの上部にあるいずれかのタブをクリックすると、クエリの各タスクの詳細を表示できます。

    • 所要時間: 各操作のすべてのタスクで費やされた実行時間の合計。
    • : クエリの各タスクによって影響を受ける行の数とサイズ。
    • Peak memory (最大メモリ): クエリの各タスクで使用される最大メモリ。

    Note

    一部の非 Photon 操作は、グループとして実行され、共通のメトリックを共有します。 この場合、すべてのサブタスクは、特定のメトリックについて、親タスクと同じ値を持ちます。

  6. グラフ ビューで、タスクにサブタスクがある場合、ノードをクリックするとその詳細を表示できます。 ツリー ビューで、> をクリックすると展開できます。

  7. 各タスクの操作が表示されます。 既定では、一部の操作のタスクとメトリックは非表示になっています。 これらの操作は、多くの場合、パフォーマンスのボトルネックではありません。 すべての操作の情報を表示したり、追加のメトリックを表示したりするには、ページの上部にある 縦方向の省略記号 をクリックして、[詳細モードを有効にする] をクリックします。 最も一般的な操作は、次のとおりです。

    • スキャン: データがデータソースから読み取られ、行として出力されました。
    • 結合: 複数のリレーションからの行が単一の行セットに結合 (インターリーブ) されました。
    • ユニオン: 同じスキーマを使用する複数のリレーションからの行が単一の行セットに連結されました。
    • シャッフル: データが再配布または再パーティション分割されました。 シャッフル操作は、クラスター上のエグゼキューター間でデータを移動するため、リソースに関してはコストが高くなります。
    • ハッシュおよびソート: 行がキーによってグループ化され、各グループ内で SUMCOUNTMAX などの集計関数を使用して評価されました。
    • フィルター: 入力が WHERE 句などによる条件に従ってフィルター処理され、行のサブセットが返されます。
    • (再利用) 交換: 目的のパーティション分割に基づいて複数のクラスター ノードにデータを再配布するには、シャッフルまたはブロードキャスト交換が使用されます。
    • 収集制限: 返される行の数が、LIMIT ステートメントを使用して切り詰められました。
    • 順序付けと射影: クエリ結果の上位 N 行が返されました。
  8. Apache Spark UI でクエリ プロファイルを表示するには、ページの上部にある 縦方向の省略記号 をクリックして、[Spark UI で開く] をクリックします。

  9. インポートしたクエリ プロファイルを閉じるには、ページの上部にある [X] をクリックします。

クエリ プロファイルで使用できる情報の詳細については、「クエリ プロファイルの詳細を表示する」のセクションを参照してください。

クエリ プロファイルの詳細を表示する

クエリ プロファイルには、クエリの最上位レベルのタスクが逆順で (最後のタスクが最初になるように) 一覧表示されます。 左側の 3 つの列には、タスク シーケンス、操作の名前、およびそのタスクに対して選択されたメトリックのグラフが表示されます。 クエリ プロファイルのさまざまな部分を理解するには、これらの手順に従います。

  1. 各サブタスクの期間を表示するには、[時間] をクリックします。
  2. [Rows] (行) をクリックし、クエリによって返される行の数とサイズを表示します。
  3. [Memory] (メモリ) をクリックし、各クエリ タスクによって消費されるメモリを表示します。 タスクにサブタスクが含まれている場合は、[>] をクリックすると、各サブタスクの詳細が表示されます。
  4. 右側の [Overview] (概要) をクリックし、クエリの SQL ステートメント、状態、開始時刻と終了時刻、期間、クエリを実行したユーザー、およびクエリが実行されたウェアハウスを表示します。
  5. タスクをクリックし、タスクの説明や、タスクの期間、消費されたメモリ、返された行の数とサイズ、および系列に関するメトリックなど、タスクの詳細を表示します。
  6. サブタスクの詳細を閉じるには、[X] をクリックします。
  7. SQL ウェアハウスの名前をクリックして、そのウェアハウスのプロパティに移動します。
  8. Apache Spark UI でクエリ プロファイルを表示するには、ページの上部にある 縦方向の省略記号 をクリックして、[Spark UI で開く] をクリックします。
  9. クエリ プロファイルを閉じるには、ページの上部にある [X] をクリックします。

クエリ プロファイルを共有する

クエリ プロファイルを他のユーザーと共有するには、次のように操作します。

  1. クエリ履歴を表示します。
  2. クエリの名前をクリックします。
  3. クエリを共有するには、次の 2 つの選択肢があります。
    • 他のユーザーがクエリに対する管理可能アクセス許可を持っている場合は、クエリ プロファイルの URL を共有できます。 [共有] をクリックします。 URL がクリップボードにコピーされます。
    • そうではなく、他のユーザーが管理可能アクセス許可を持っていないか、ワークスペースのメンバーではない場合は、クエリ プロファイルを JSON オブジェクトとしてダウンロードできます。 ダウンロード。 JSON ファイルは、ローカル システムにダウンロードされます。

クエリ プロファイルをインポートする

クエリ プロファイルの JSON をインポートするには、次のように操作します。

  1. クエリ履歴を表示します。

  2. 右上にあるケバブ メニュー 縦方向の省略記号 をクリックし、[クエリ プロファイルのインポート (JSON)] を選択します。

  3. ファイル ブラウザーで、共有された JSON ファイルを選択し、[開く] をクリックします。 JSON ファイルがアップロードされ、クエリ プロファイルが表示されます。

    クエリ プロファイルをインポートすると、ブラウザー セッションに動的に読み込まれ、ワークスペースには保持されません。 表示するたびに、再インポートする必要があります。

  4. インポートしたクエリ プロファイルを閉じるには、ページの上部にある [X] をクリックします。

次の手順