クエリ プロファイル
クエリプロファイルを使用して、クエリ実行の詳細を視覚化できます。 クエリ プロファイルは、クエリの実行中に発生するパフォーマンスのボトルネックのトラブルシューティングに役立ちます。 例えば:
各クエリ タスクとそれに関連するメトリクス (所要時間、処理された行数、処理された行数、メモリ消費量など) を視覚化できます。
クエリ実行の最も遅い部分を一目で特定し、クエリに対する変更の影響を評価できます。
結合の爆発やテーブル全体のスキャンなど、SQL ステートメントの一般的な間違いを発見して修正できます。
重要
SQL クエリのクエリ履歴に記録される時間は、SQL ウェアハウスが実際にクエリの実行に費やした時間のみです。 内部キューイングなど、クエリの実行準備に関連する追加のオーバーヘッドや、データのアップロードおよびダウンロードプロセスに関連する追加の時間は記録されません。
クエリプロファイルを表示する
SQL エディターまたはノートブックでクエリを実行した後、出力の下部にある経過時間をクリックしてクエリ プロファイルを開くことができます。
また、クエリ履歴からクエリプロファイルを次のように表示することもできます。
クエリ履歴を表示します。
クエリの名前をクリックします。 クエリ メトリクスの概要が表示されます。
[ クエリ プロファイルの表示] をクリックします。
注:
「Query profile is not available」と表示されている場合、このクエリに使用できるプロファイルはありません。クエリ プロファイルは、クエリ キャッシュから実行されるクエリには使用できません。 クエリ キャッシュを回避するには、
LIMIT
の変更や削除など、クエリに簡単な変更を加えます。グラフ ビュー (デフォルト) でクエリ プロファイルを表示するには、 [グラフ ビュー]をクリックします。 クエリ プロファイルをツリーとして表示するには、[ ツリー ビュー] をクリックします。
グラフビューは、あるノードから別のノードへのデータの流れを視覚化するために最適化されています。
ツリー ビューは、最も実行時間の長い演算子の特定など、クエリのパフォーマンスに関する問題をすばやく見つけるために最適化されています。
グラフ ビューまたはツリー ビューでは、ページの上部にあるいずれかのタブをクリックして、各クエリのタスクの詳細を表示できます。
費やした時間: 各操作のすべてのタスクによって費やされた実行時間の合計。
Rows : 各クエリのタスクによって影響を受ける行の数とサイズ。
ピーク メモリ: クエリの各タスクが消費したピーク メモリ。
注:
Photon 以外の一部の操作はグループとして実行され、共通のメトリクスを共有します。 この場合、すべてのサブタスクは、特定のメトリクスの親タスクと同じ値を持ちます。
グラフ ビューで、タスクにサブタスクがある場合は、ノードをクリックして詳細を表示します。 ツリー ビューでは、[ > ] をクリックして展開できます。
各タスクの操作が表示されます。 デフォルトにより、一部の操作のタスクとメトリックが非表示になります。 これらの操作がパフォーマンスのボトルネックの原因になる可能性は低いです。 すべての操作の情報を表示し、追加のメトリックを表示するには、ページの上部にある[詳細モードを有効にする]をクリックします。 最も一般的な操作は次のとおりです。
スキャン: データはデータソースから読み取られ、行として出力されました。
結合: 複数のリレーションの行が 1 つの行セットに結合 (インターリーブ) されました。
ユニオン: 同じスキーマを使用する複数のリレーションの行が、1つの行セットに連結されました。
シャッフル: データが再配布または再パーティション化されました。 シャッフル操作はクラスター上のエグゼキューター間でデータを移動するため、リソースに関してコストがかかります。
ハッシュ / ソート: 行はキーによってグループ化され、各グループ内で
SUM
、COUNT
、またはMAX
などの集計関数を使用して評価されました。フィルター: 入力は、
WHERE
句などの条件に従ってフィルター処理され、行のサブセットが返されます。(再利用) Exchange : シャッフルまたはブロードキャスト交換は、必要なパーティショニングに基づいてクラスター ノード間でデータを再分散するために使用されます。
Collect Limit: 返された行数は、
LIMIT
ステートメントを使用して切り捨てられました。Take Ordered And Project: クエリ結果の上位 N 行が返されました。
Apache Spark UIでクエリプロファイルを表示するには、ページの上部にある[Spark UI で開く]をクリックします。
インポートしたクエリ プロファイルを閉じるには、ページ上部の [X ] をクリックします。
クエリ プロファイルで利用できる情報の詳細については、 「クエリ プロファイルの詳細を表示する」を参照してください。
クエリ プロファイルの詳細を表示する
クエリ プロファイルには、クエリの最上位タスクが逆の順序でリストされ、最後のタスクが最初にリストされます。 左側の 3 つの列には、タスク シーケンス、操作の名前、およびそのタスクに対して選択されたメトリクスのグラフが表示されます。 これらのステップに従って、クエリ プロファイルのさまざまな部分を理解してください。
[ 時間 ] をクリックすると、各サブタスクの期間が表示されます。
[行] をクリックすると、クエリによって返される行の数とサイズが表示されます。
[メモリ]をクリックすると、各クエリ タスクによって消費されるメモリが表示されます。 タスクにサブタスクがある場合は、 [>]をクリックして各サブタスクの詳細を表示できます。
右側で「概要」をクリックすると、クエリの SQL ステートメント、ステータス、開始時刻と終了時刻、期間、クエリを実行したユーザー、およびクエリが実行されたウェアハウスが表示されます。
タスクをクリックすると、タスクの説明や、タスクの期間、消費されたメモリ、返された行の数とサイズ、リネージに関するメトリクスなど、タスクに関する詳細が表示されます。
サブタスクの詳細を閉じるには、「 X」をクリックします。
SQL ウェアハウスの名前をクリックして、そのウェアハウスのプロパティに移動します。
Apache Spark UIでクエリプロファイルを表示するには、ページの上部にある[Spark UI で開く]をクリックします。
クエリ プロファイルを閉じるには、ページ上部の [X ] をクリックします。
クエリ プロファイルのインポート
クエリプロファイルの JSON をインポートするには:
クエリ履歴を表示します。
ケバブメニューをクリック右上にある をクリックし、クエリ プロファイル (JSON) のインポートを選択します。
ファイル ブラウザで、共有された JSON ファイルを選択し、 [開く]をクリックします。 JSON ファイルがアップロードされ、クエリ プロファイルが表示されます。
クエリ プロファイルをインポートすると、ブラウザ セッションに動的にロードされ、ワークスペースには保持されません。 表示するたびに再インポートする必要があります。
インポートしたクエリ プロファイルを閉じるには、ページ上部の [X ] をクリックします。
次のステップ
クエリ履歴 APIを使用したクエリ メトリクスへのアクセスについて学習します。