パフォーマンスエクスプローラによるクエリワークロードの分析

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;
Copy

注釈

The USAGE_VIEWER database role provides visibility into historical usage data, which can be used for cost management. For more information, see SNOWFLAKE データベースロール.

パフォーマンスエクスプローラーを開く

パフォーマンスエクスプローラーを開くには、以下の手順を実行します。

  1. Snowsight にサインインします。

  2. ナビゲーションメニューで 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のクエリごとに失敗したクエリの数。

  • 折れ線グラフの上の大きな数字は、期間中の1,000クエリに対する平均失敗数

  • パーセント値は、前の期間からの失敗率の変化率

  • 折れ線グラフは、期間中の各時間の1,000クエリに対する失敗の数

このメトリックは低いかゼロであるべきです。クエリが失敗している場合は、クエリ履歴とエラーを確認し、問題を解決するためにクエリを修正してください。

クエリ履歴でクエリのアクティビティをモニターする . . QUERY_HISTORY ビュー

Query retries/1K

1000回あたりのリトライ回数

以下のメトリックを含む、実行された1,000のクエリごとに再試行したクエリの数。

  • 折れ線グラフの上の大きな数字は、期間中の1,000クエリに対する平均再試行数

  • パーセント値は、前の期間からの再試行率の変化率

  • 折れ線グラフは、期間中の各時間の1,000クエリに対する再試行の数

このメトリックは低いかゼロであるべきです。クエリが再試行される場合は、原因を確認し、クエリの再試行を防止するための対策を講じてください。たとえば、メモリ不足のエラーによってクエリが再試行された場合、ウェアハウスの設定を変更すると問題が解決する可能性があります。

QUERY_HISTORY ビュー

Query overload %

パーセント

以下のメトリックを含め、クエリがウェアハウスリソースのキューで待機していた総実行時間の割合です。

  • 折れ線グラフの上の大きな数字は、その期間にクエリがウェアハウスリソースのキューで待機した時間の中央値

  • パーセンテージの値は、前回からの待機クエリ数の変化率

  • 折れ線グラフは、期間中の各時間において、クエリがウェアハウスリソースのキューで待機していた時間の割合

このメトリックは低いかゼロであるべきです。実行前にクエリが待機している場合、ウェアハウスリソースが枯渇し、リソースが利用可能になるまでクエリがキューに入れられる可能性があります。

キューの削減

Query blocked %

パーセント

クエリがリソースのトランザクションロックを待つためにブロックされた、総実行時間の割合です。

  • 折れ線グラフの上にある大きな数字は、その期間にロック待ちでブロックされた時間の割合の中央値

  • パーセンテージの値は、クエリがブロックされた時間の前回からの変化率

  • 折れ線グラフは、クエリがロック待ちでブロックされた時間の割合を、期間中の各時間について示している

このメトリックは低いかゼロであるべきです。クエリがブロックされている場合は、クエリ履歴とエラーを確認し、問題を解決するためにクエリを修正してください。

リソースのロック . . トランザクションのベストプラクティス . . LOCK_WAIT_HISTORY ビュー . . クエリ履歴でクエリのアクティビティをモニターする . . QUERY_HISTORY ビュー

クエリアクティビティのモニタリング

パフォーマンスエクスプローラーのこのセクションには、ある期間のクエリーアクティビティに関するメトリックが含まれます。これらのメトリックを監視することで、リソースの使用状況やユーザーのクエリ実行能力に影響を与える可能性のある、クエリアクティビティの大規模な変化を追跡することができます。

このセクションには以下のメトリックが含まれます。

メトリック

単位

説明

メモ

詳細情報

Query duration

各時間帯でクエリ完了に要した時間です。折れ線グラフは、全クエリの時間中央値、90パーセンタイルのクエリの時間、99パーセンタイルのクエリの時間を示しています。

このメトリックはデータや実行しているクエリーの種類によって大きく異なります。時間と共に持続時間が変化するクエリは、調査や最適化の候補になるかもしれません。

実行時間の調査 . . クエリパフォーマンスの最適化

Query throughput

クエリ

各時間に実行されたクエリの数です。

このメトリックは、クエリアクティビティの変化を明らかにし、ワークロードの新しい傾向や変化を示す可能性があります。

パフォーマンスに対するウェアハウスの最適化

Query wait time

クエリがウェアハウスリソースを待っていた時間、またはリソースがロックされていた時間です。常体( OverloadProvisioningRepairBlocked )については、 QUERY_HISTORY ビュー をご参照ください。

このメトリックは低いかゼロであるべきです。実行前にクエリが待機している場合、ウェアハウスリソースが枯渇し、リソースが利用可能になるまでクエリがキューに入れられる可能性があります。

キューの削減 . . リソースのロック

Query failures

失敗

期間中の各時間に失敗したクエリの数です。

このメトリックは低いかゼロであるべきです。クエリが失敗している場合は、クエリ履歴とエラーを確認し、問題を解決するためにクエリを修正してください。

クエリ履歴でクエリのアクティビティをモニターする . . QUERY_HISTORY ビュー

トップウェアハウスの監視

パフォーマンスエクスプローラーのこのセクションには、Snowflake環境で期間中に最も変更があったウェアハウスに関するメトリックが含まれます。これらのメトリックを監視することで、ウェアハウスがクエリアクティビティをサポートするために期待通りに機能していることを確認できます。メトリックはまた、他のウェアハウスと比較して、クエリアクティビティに異常な傾向があるウェアハウスがあるかどうかを示すこともできます。また、ウェアハウスが実行するワークロードの構成が変わったかどうかも判断できます。

このセクションのすべてのメトリックには、メトリックの値と前回からの変化率が表示されます。変化率はプラスまたはマイナスで、プラスの変化は上向き矢印、マイナスの変化は下向き矢印で表されます。各メトリックについて、パフォーマンスエクスプローラーは最も変化の大きかった10のウェアハウスを表示します。より多くのウェアハウスのメトリックを表示するには、チャート上で > を選択し、サイドパネルを開きます。このメトリックにウェアハウスの前の期間の値がない場合、変化率の代わりに --- が表示されます。ウェアハウスが新しいので、あるいは測定されるイベントの頻度が低いので、値がない可能性があります。

このセクションには以下のメトリックが含まれます。

メトリック

タブ

単位

説明

メモ

詳細情報

Warehouses with errors

Query failures/1K

1000件あたりの失敗数

各ウェアハウスについて、1,000クエリの実行に対して失敗したクエリの数です。

このメトリックは低いかゼロであるべきです。クエリが失敗している場合は、クエリ履歴とエラーを確認し、問題を解決するためにクエリを修正してください。

クエリ履歴でクエリのアクティビティをモニターする . . QUERY_HISTORY ビュー

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

--

なし

ウェアハウスイベントのソート可能なテーブルです。

このメトリックは、期間中にどのウェアハウスが変更されたかを示しています。予期せぬ出来事がないかデータを調べてください。

WAREHOUSE_EVENTS_HISTORY ビュー

トップテーブルのモニタリング

パフォーマンスエクスプローラーのこのセクションには、Snowflake環境で期間中に最も変更があったテーブルに関するメトリックが含まれます。これらのメトリックを監視することで、テーブルがクエリアクティビティをサポートし、期待通りにデータを返せることを確認できます。メトリックはまた、他のテーブルと比較して、クエリアクティビティに異常な傾向があるテーブルがあるかどうかを示すこともできます。また、最近変更されたテーブルがあるかどうか、どのように変更されたかを調べることもできます。

このセクションのすべてのメトリックには、メトリックの値と前回からの変化率が表示されます。変化率はプラスまたはマイナスで、プラスの変化は上向き矢印、マイナスの変化は下向き矢印で表されます。各メトリックについて、パフォーマンスエクスプローラーは最も変化の大きかった10のテーブルを表示します。より多くのテーブルのメトリックを表示するには、チャート上で > を選択し、サイドパネルを開きます。このメトリックにテーブルの前の期間の値がない場合、変化率の代わりに --- が表示されます。テーブルが新しいので、あるいは測定されるイベントの頻度が低いので、値がない可能性があります。

このセクションには以下のメトリックが含まれます。

メトリック

タブ

単位

説明

メモ

詳細情報

Table query failures/1K

--

1000件あたりの失敗数

各テーブルについて、1,000クエリの実行に対して失敗したクエリの数です。

このメトリックは低いかゼロであるべきです。クエリが失敗している場合は、クエリ履歴とエラーを確認し、問題を解決するためにクエリを修正してください。

クエリ履歴でクエリのアクティビティをモニターする . . QUERY_HISTORY ビュー

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.

TABLES ビュー