パフォーマンスエクスプローラによるクエリワークロードの分析¶
Snowsight のパフォーマンスエクスプローラーを使用して、SQLワークロードのインタラクティブメトリックをモニターできます。メトリックには、Snowflake環境の全体的な健全性、クエリアクティビティ、ウェアハウスへの変更、テーブルへの変更が表示されます。
パフォーマンスエクスプローラーの利点¶
パフォーマンスエクスプローラーは、Snowflakeのアクティビティに関する以下の主要な質問に答えるのに役立ちます。
全体的なアクティビティ: クエリは全般的に成功しているか、Snowflakeユーザーは作業を完了できているか
経時変化: クエリのアクティビティやリソースが予想と異なっている場合、何が変わり、いつ変化が起きたのか
ホットスポット: アクションを起こす機会を探すとき、どこに注意を向けるべきか
パフォーマンスエクスプローラーの一般的な使用例¶
パフォーマンスエクスプローラーは、次のようなユースケースに役立ちます。
クエリまたはワークロードに関する問題レポートの調査: Snowflakeワークロードの動作が変わり始めた場合、ワークロードが依存するリソースや近隣のワークロードのアクティビティなど、最近他に何が変わったかを判断します。
ウェアハウスのホットスポットの能動的な特定: ウェアハウスやテーブルに持続的なエラーや飽和が見られる場合、重要なワークロードに影響が及ぶ前にホットスポットを特定し、対処します。
最適化の機会の特定: サポートするクエリアクティビティとミスマッチしている可能性のあるウェアハウスとテーブルを見つけ、ワークロードとリソースを調整して互換性を持たせます。
必要な権限¶
ACCOUNTADMINロール を付与されたユーザーは、パフォーマンスエクスプローラーにアクセスできます。
ACCOUNTADMINロールを付与されていないユーザーがパフォーマンスエクスプローラーにアクセスするには、以下のロールを付与する必要があります。
APP_USAGE_VIEWER アプリケーションロール
USAGE_VIEWER データベースロール
例えば、ユーザー joe がパフォーマンスエクスプローラーにアクセスできるようにしたい場合、以下のコマンドを実行します。
USE ROLE ACCOUNTADMIN;
CREATE ROLE pe_viewer_role;
GRANT APPLICATION ROLE SNOWFLAKE.APP_USAGE_VIEWER TO ROLE pe_viewer_role;
GRANT DATABASE ROLE SNOWFLAKE.USAGE_VIEWER TO ROLE pe_viewer_role;
GRANT ROLE pe_viewer_role TO USER joe;
注釈
The USAGE_VIEWER database role provides visibility into historical usage data, which can be used for cost management. For more information, see SNOWFLAKE データベースロール.
パフォーマンスエクスプローラーを開く¶
パフォーマンスエクスプローラーを開くには、以下の手順を実行します。
Snowsight にサインインします。
ナビゲーションメニューで Monitoring » Performance Explorer を選択します。
パフォーマンスエクスプローラーには、ワークロードとSnowflake環境の全般的な健全性に関連するメトリックを示すチャートが含まれています。
パフォーマンスエクスプローラーダッシュボードを理解する¶
パフォーマンスエクスプローラーダッシュボードのチャートを使用して、SQLワークロードのインタラクティブメトリックを監視できます。また、フィルターを適用して、関心のあるクエリアクティビティとリソースに関するメトリックのみを表示できます。
パフォーマンスエクスプローラーのフィルター¶
パフォーマンスエクスプローラーダッシュボードの上部では、以下のフィルターを適用できます。
Period :直近1週間、直近2週間、またはカスタム範囲など、期間を選択します。ダッシュボードには、指定した期間のメトリックが表示されます。
パフォーマンスエクスプローラーは、デフォルトで1週間分のメトリックを表示します。現在の日付からさかのぼり、最大1か月の期間をサポートします。
いくつかのパフォーマンスエクスプローラーチャートは、前期比の変化率を示します。前期の範囲は当期の範囲と一致します。例えば、現在の期間が2週間であれば、前の期間は現在の期間が始まる前の2週間です。
Warehouse :ウェアハウスを選択すると、そのウェアハウスを使用して実行されたクエリアクティビティのメトリックのみが表示されます。リスト内のウェアハウスを限定するには、検索フィールドを使用します。フィルターを解除するには、
Xを選択します。Database :データベースを選択すると、そのデータベースにアクセスしたクエリアクティビティのメトリックのみを表示できます。リスト内のデータベースを限定するには、検索フィールドを使用します。フィルターを解除するには、
Xを選択します。Role :ロールを選択すると、そのロールが開始したクエリアクティビティのメトリックのみを表示できます。リスト内のロールを制限するには、検索フィールドを使用します。フィルターを解除するには、
Xを選択します。
パフォーマンスエクスプローラーのチャート¶
パフォーマンスエクスプローラーは、さまざまなタイプのチャートでメトリックを表示します。各タイプのチャートの構成要素を理解し、それをどのように解釈するかを理解することが重要です。
クエリヘルス と クエリアクティビティ セクションには、以下の画像のような折れ線グラフがあります。
以下の表は、画像の吹き出しについて説明したものです。
吹き出し |
説明 |
|---|---|
1 |
> を選択し、サイドパネルを開きます。 |
2 |
期間中の平均値または中央値を示します。 |
3 |
前期比の増減率を示します。 |
4 |
1時間の値を表します。値は、間隔の開始時に一定時間のものが表示されます。例えば、間隔が1時間の場合、9 AMに表示される値は、9 AMから10 AMまでの間隔の値です。 |
チャートの中には、大きな平均値や中央値、期間中の変化率が含まれているものもあります。複数の行がある場合は、チャートの上に行のキーがあります。
チャートによってはタイトルの横に information icon があります。アイコンにカーソルを合わせると、チャート内のメトリックに関する情報が表示されます。
折れ線グラフのポイントにカーソルを合わせると、特定の時間の値を見ることができます。
トップウェアハウス と トップテーブル のセクションには、以下の画像のような棒グラフがあります。
以下の表は、画像の吹き出しについて説明したものです。
吹き出し |
説明 |
|---|---|
1 |
> を選択し、サイドパネルを開きます。 |
2 |
タブを選択すると、そのタブにメトリックが表示されます。 |
3 |
現在の期間におけるこのメトリックの値を示します。 |
4 |
前期比の増減率を示します。 |
5 |
比較のための前の期間のデータがないことを示します。 |
折れ線グラフと棒グラフの両方で、 > を選択すると、チャート上のメトリックの詳細情報を表示するサイドパネルが開きます。詳細情報は、チャートに示されたメトリックによって異なります。ほとんどのサイドパネルには、ソート可能なテーブルが表示され、これを使用して、期間内の特定のウェアハウス、ロール、およびデータベースのメトリックを表示できます。以下の画像はサイドパネルの例です。
トップウェアハウス と トップテーブル のセクションにも、以下の画像に似たイベントチャートがあります。
イベントチャートは、オブジェクトのタイプに対するイベントのソート可能な表を表示します。予期せぬ出来事が起きていないか、データを調べることができます。ウェアハウスイベントの詳細については、 WAREHOUSE_EVENTS_HISTORY ビュー をご参照ください。テーブルイベントの詳細については、 TABLES ビュー をご参照ください。
クエリの健全性のモニタリング¶
パフォーマンスエクスプローラーのこのセクションには、Snowflake環境の全体的な健全性に関するメトリックが含まれています。これらのメトリックを監視することで、ユーザーがクエリを正常に実行し、必要なタスクを完了できることを確認できます。
このセクションには以下のメトリックが含まれます。
メトリック |
単位 |
説明 |
メモ |
詳細情報 |
|---|---|---|---|---|
Query failures/1K |
1000件あたりの失敗数 |
以下のメトリックを含む、実行された1,000のクエリごとに失敗したクエリの数。
|
このメトリックは低いかゼロであるべきです。クエリが失敗している場合は、クエリ履歴とエラーを確認し、問題を解決するためにクエリを修正してください。 |
|
Query retries/1K |
1000回あたりのリトライ回数 |
以下のメトリックを含む、実行された1,000のクエリごとに再試行したクエリの数。
|
このメトリックは低いかゼロであるべきです。クエリが再試行される場合は、原因を確認し、クエリの再試行を防止するための対策を講じてください。たとえば、メモリ不足のエラーによってクエリが再試行された場合、ウェアハウスの設定を変更すると問題が解決する可能性があります。 |
|
Query overload % |
パーセント |
以下のメトリックを含め、クエリがウェアハウスリソースのキューで待機していた総実行時間の割合です。
|
このメトリックは低いかゼロであるべきです。実行前にクエリが待機している場合、ウェアハウスリソースが枯渇し、リソースが利用可能になるまでクエリがキューに入れられる可能性があります。 |
|
Query blocked % |
パーセント |
クエリがリソースのトランザクションロックを待つためにブロックされた、総実行時間の割合です。
|
このメトリックは低いかゼロであるべきです。クエリがブロックされている場合は、クエリ履歴とエラーを確認し、問題を解決するためにクエリを修正してください。 |
リソースのロック . . トランザクションのベストプラクティス . . LOCK_WAIT_HISTORY ビュー . . クエリ履歴でクエリのアクティビティをモニターする . . QUERY_HISTORY ビュー |
クエリアクティビティのモニタリング¶
パフォーマンスエクスプローラーのこのセクションには、ある期間のクエリーアクティビティに関するメトリックが含まれます。これらのメトリックを監視することで、リソースの使用状況やユーザーのクエリ実行能力に影響を与える可能性のある、クエリアクティビティの大規模な変化を追跡することができます。
このセクションには以下のメトリックが含まれます。
メトリック |
単位 |
説明 |
メモ |
詳細情報 |
|---|---|---|---|---|
Query duration |
秒 |
各時間帯でクエリ完了に要した時間です。折れ線グラフは、全クエリの時間中央値、90パーセンタイルのクエリの時間、99パーセンタイルのクエリの時間を示しています。 |
このメトリックはデータや実行しているクエリーの種類によって大きく異なります。時間と共に持続時間が変化するクエリは、調査や最適化の候補になるかもしれません。 |
|
Query throughput |
クエリ |
各時間に実行されたクエリの数です。 |
このメトリックは、クエリアクティビティの変化を明らかにし、ワークロードの新しい傾向や変化を示す可能性があります。 |
|
Query wait time |
秒 |
クエリがウェアハウスリソースを待っていた時間、またはリソースがロックされていた時間です。常体( Overload 、 Provisioning 、 Repair 、 Blocked )については、 QUERY_HISTORY ビュー をご参照ください。 |
このメトリックは低いかゼロであるべきです。実行前にクエリが待機している場合、ウェアハウスリソースが枯渇し、リソースが利用可能になるまでクエリがキューに入れられる可能性があります。 |
|
Query failures |
失敗 |
期間中の各時間に失敗したクエリの数です。 |
このメトリックは低いかゼロであるべきです。クエリが失敗している場合は、クエリ履歴とエラーを確認し、問題を解決するためにクエリを修正してください。 |
トップウェアハウスの監視¶
パフォーマンスエクスプローラーのこのセクションには、Snowflake環境で期間中に最も変更があったウェアハウスに関するメトリックが含まれます。これらのメトリックを監視することで、ウェアハウスがクエリアクティビティをサポートするために期待通りに機能していることを確認できます。メトリックはまた、他のウェアハウスと比較して、クエリアクティビティに異常な傾向があるウェアハウスがあるかどうかを示すこともできます。また、ウェアハウスが実行するワークロードの構成が変わったかどうかも判断できます。
このセクションのすべてのメトリックには、メトリックの値と前回からの変化率が表示されます。変化率はプラスまたはマイナスで、プラスの変化は上向き矢印、マイナスの変化は下向き矢印で表されます。各メトリックについて、パフォーマンスエクスプローラーは最も変化の大きかった10のウェアハウスを表示します。より多くのウェアハウスのメトリックを表示するには、チャート上で > を選択し、サイドパネルを開きます。このメトリックにウェアハウスの前の期間の値がない場合、変化率の代わりに --- が表示されます。ウェアハウスが新しいので、あるいは測定されるイベントの頻度が低いので、値がない可能性があります。
このセクションには以下のメトリックが含まれます。
メトリック |
タブ |
単位 |
説明 |
メモ |
詳細情報 |
|---|---|---|---|---|---|
Warehouses with errors |
Query failures/1K |
1000件あたりの失敗数 |
各ウェアハウスについて、1,000クエリの実行に対して失敗したクエリの数です。 |
このメトリックは低いかゼロであるべきです。クエリが失敗している場合は、クエリ履歴とエラーを確認し、問題を解決するためにクエリを修正してください。 |
|
Query OOM errors/1K |
1000当たりのエラー数 |
各ウェアハウスについて、1,000クエリ実行ごとに「メモリ不足」エラーを返したクエリの数です。 |
このメトリックは低いかゼロであるべきです。クエリが「メモリ不足」エラーで失敗する場合は、クエリ履歴を確認して、どのウェアハウスでどのクエリが失敗しているかを特定し、クエリを実行するウェアハウスを修正してエラーを回避します。 |
クエリ履歴でクエリのアクティビティをモニターする . . QUERY_HISTORY ビュー . . 大きすぎてメモリに収まらないクエリ |
|
Query retries/1K |
1000回あたりのリトライ回数 |
各ウェアハウスについて、1,000クエリが実行されるごとに再試行されたクエリの数です。 |
このメトリックは低いかゼロであるべきです。ウェアハウスのメモリ不足が原因でクエリが再試行されている場合は、クエリ履歴を確認して、どのウェアハウスでどのクエリが再試行されているかを特定し、クエリを実行するウェアハウスを修正してエラーを回避します。 |
クエリ履歴でクエリのアクティビティをモニターする . . QUERY_HISTORY ビュー . . パフォーマンスに対するウェアハウスの最適化 |
|
Warehouses with spillage |
% queries with bytes spilled |
パーセント |
各ウェアハウスについて、実行時にローカルディスクまたはリモートクラウドストレージにスピルしたクエリの割合です。 |
このメトリックは低いかゼロであるべきです。ウェアハウスのメモリが不足しているためにクエリがディスクにスピルしている場合は、クエリ履歴を確認して、どのクエリがウェアハウスでスピルしているかを特定し、エラーを回避するためにクエリを実行するウェアハウスを修正します。 |
クエリ履歴でクエリのアクティビティをモニターする . . QUERY_HISTORY ビュー . . 大きすぎてメモリに収まらないクエリ |
% bytes spilled of total |
パーセント |
各ウェアハウスについて、実行時にローカルディスクまたはリモートのクラウドストレージにスピルしたバイト数の割合を、読み込んだバイト数と比較しています。 |
このメトリックは低いかゼロであるべきです。ウェアハウスのメモリが不足しているためにクエリがディスクにスピルしている場合は、クエリ履歴を確認して、どのクエリがウェアハウスでスピルしているかを特定し、エラーを回避するためにクエリを実行するウェアハウスを修正します。 |
クエリ履歴でクエリのアクティビティをモニターする . . QUERY_HISTORY ビュー . . 大きすぎてメモリに収まらないクエリ |
|
Query wait time % |
Overload % |
パーセント |
各ウェアハウスについて、クエリワークロードによってウェアハウスに過負荷がかかったため、クエリが待機した総実行時間の割合です。 |
このメトリックは低いかゼロであるべきです。実行前にクエリが待機している場合、ウェアハウスリソースが枯渇し、リソースが利用可能になるまでウェアハウスによってクエリがキューに入れられる可能性があります。 |
|
Provisioning % |
パーセント |
各ウェアハウスについて、ウェアハウスの作成、再開、またはサイズ変更により、クエリがウェアハウスのコンピュートリソースのプロビジョニングを待つ総実行時間の平均割合です。 |
このメトリックは低いかゼロであるべきです。実行前にクエリが待機している場合、ウェアハウスリソースが枯渇し、リソースが利用可能になるまでクエリがキューに入れられる可能性があります。 |
||
Warehouse query performance |
Median query duration |
秒 |
各ウェアハウスについて、クエリ実行時間の中央値です。 |
このメトリックはデータや実行しているクエリーの種類によって大きく異なります。クエリ期間の中央値に異常な変化が見られる場合、このウェアハウスがサポートするワークロードが変更されたか、ウェアハウスの構成が変更された可能性があります。 |
|
Query throughput |
クエリ |
各ウェアハウスについて、処理されたクエリの数です。 |
このメトリックは、クエリのアクティビティの変化を明らかにすることができ、それによりクエリを実行するウェアハウスの修正が必要になるかもしれません。 |
||
Warehouse events |
-- |
なし |
ウェアハウスイベントのソート可能なテーブルです。 |
このメトリックは、期間中にどのウェアハウスが変更されたかを示しています。予期せぬ出来事がないかデータを調べてください。 |
トップテーブルのモニタリング¶
パフォーマンスエクスプローラーのこのセクションには、Snowflake環境で期間中に最も変更があったテーブルに関するメトリックが含まれます。これらのメトリックを監視することで、テーブルがクエリアクティビティをサポートし、期待通りにデータを返せることを確認できます。メトリックはまた、他のテーブルと比較して、クエリアクティビティに異常な傾向があるテーブルがあるかどうかを示すこともできます。また、最近変更されたテーブルがあるかどうか、どのように変更されたかを調べることもできます。
このセクションのすべてのメトリックには、メトリックの値と前回からの変化率が表示されます。変化率はプラスまたはマイナスで、プラスの変化は上向き矢印、マイナスの変化は下向き矢印で表されます。各メトリックについて、パフォーマンスエクスプローラーは最も変化の大きかった10のテーブルを表示します。より多くのテーブルのメトリックを表示するには、チャート上で > を選択し、サイドパネルを開きます。このメトリックにテーブルの前の期間の値がない場合、変化率の代わりに --- が表示されます。テーブルが新しいので、あるいは測定されるイベントの頻度が低いので、値がない可能性があります。
このセクションには以下のメトリックが含まれます。
メトリック |
タブ |
単位 |
説明 |
メモ |
詳細情報 |
|---|---|---|---|---|---|
Table query failures/1K |
-- |
1000件あたりの失敗数 |
各テーブルについて、1,000クエリの実行に対して失敗したクエリの数です。 |
このメトリックは低いかゼロであるべきです。クエリが失敗している場合は、クエリ履歴とエラーを確認し、問題を解決するためにクエリを修正してください。 |
|
Table queries blocked/1K |
-- |
1000当たりのブロック数 |
各テーブルについて、1,000クエリの実行に対してブロックされたクエリの数です。 |
このメトリックは低いかゼロであるべきです。クエリがブロックされている場合は、クエリ履歴とエラーを確認し、問題を解決するためにクエリを修正してください。 |
リソースのロック . . トランザクションのベストプラクティス . . LOCK_WAIT_HISTORY ビュー . . クエリ履歴でクエリのアクティビティをモニターする . . QUERY_HISTORY ビュー |
Table read performance |
Median read query duration |
秒 |
各テーブルについて、クエリ実行時間の中央値です。 |
このメトリックはデータや実行しているクエリーの種類によって大きく異なります。時間と共に持続時間が変化するクエリは、調査や最適化の候補になるかもしれません。 |
|
Read query throughput |
クエリ |
各テーブルについて、処理されたクエリの数です。 |
このメトリックは、テーブルに対するクエリアクティビティの変化を明らかにすることができます。あるテーブルに対するクエリ数が増加した場合、クエリパフォーマンスを最適化するためにそのテーブルを修正したほうがいいかもしれません。例えば、テーブル上で検索最適化を有効にすることができます。 |
||
Table write performance |
Median write query duration |
秒 |
各テーブルについて、データ操作言語(DML)操作の実行時間の中央値です。 |
このメトリックは、データや実行しているDML操作の種類によって大きく異なります。DML操作が時間と共に変化しているものは、調査や最適化の候補になるかもしれません。 |
|
Write query throughput |
クエリ |
各テーブルについて、DML操作の処理数です。テーブルに対するDML操作の回数が増加した場合、パフォーマンスを最適化するためにテーブルを修正した方がよいでしょう。 |
このメトリックは、DMLの操作回数の変化を明らかにすることができます。 |
||
Table change events |
-- |
なし |
A sortable table of table events. |
This metric shows which tables changed in the period. Examine the data for unexpected events. |