第9章 Snowflakeクエリのパフォーマンスの分析と改善
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
Snowflake は、クラウド用にゼロから構築された。さらに、ユーザがクラウドでデータを管理する際に通常直面する複雑さの多くを抽象化するように構築されている。マイクロパーティション、検索最適化サービス、マテリアライズドビューなどの機能は、パフォーマンスを向上させるためにSnowflakeがバックグラウンドで機能するユニークな方法の一例である。この章では、これらのユニークな機能について学ぶ。
また、Snowflakeではさまざまなメソッドでクエリパフォーマンスを簡単に分析することができる。ここでは、クエリ履歴のプロファイリング、ハッシュ関数、クエリプロファイルツールなど、Snowflakeのクエリパフォーマンスを分析するための一般的なアプローチについて学ぶ。
準備作業
Chapter9 クエリの改善」というタイトルの新しいワークシートを作成する。新しいフォルダとワークシートの作成にヘルプが必要な場合は、"Snowsightワークシートのナビゲー ション "を参照する。ワークシートのコンテキストをセットするには、SYSADMINロールとCOMPUTE_WH仮想ウェアハウスを使用していることを確認する。SNOWFLAKEサンプルデータベースを使用するので、この章では追加の準備作業やクリーンアップは必要ない。
クエリのパフォーマンスを分析する
クエリ パフォーマンス分析は、過剰なクレジットを消費している可能性のあるパフォーマンスの悪いクエリを特定するのに役立つ。Snowflakeのクエリパフォーマンスを分析する方法は数多くある。このセクションでは、そのうちの3つを見ていく:QUERY_HISTORY プロファイリング、HASH() 関数、Web UI の履歴の使用。
QUERY_HISTORY プロファイリング
INFORMATION_SCHEMAについては、第3章で初めて学んだ。SNOWFLAKE INFORMATION_SCHEMAは、テーブルデータの辞書と呼ばれ、Snowflakeデータベースごとに自動的に作成される。INFORMATION_SCHEMA上で使用されるQUERY_HISTORY テーブル関数は、特定のデータベースに対して実行されたクエリに関する非常に有用な情報を提供する。
以下のクエリを実行すると、現在のユーザが過去1日間に実行したすべてのクエリに関する詳細を取得することができ、レコードは合計経過時間の降順で返される:
USEROLEACCOUNTADMIN;USEDATABASE<databasename>;SELECT*FROMTABLE(INFORMATION_SCHEMA.QUERY_HISTORY(dateadd('days',-1,current_timestamp()),current_timestamp()))ORDERBYTOTAL_ELAPSED_TIMEDESC;
このクエリの結果( )は、頻繁に実行されるロングラン・クエリを発見するために必要な情報を与えてくれる。こうすることで、クエリを最初に分析し、パフォーマンス改善の可能性を検討することができ、ユーザにとって最大の違いを生み出すことができる。
特定のユーザ、セッション、仮想倉庫を選択することで、クエリ履歴のフォーカスを絞り込むことができる。それらの関数は以下の通りである: ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access