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

Snowflakeアーキテクチャでは、仮想ウェアハウスがクエリの実行に必要なコンピューティング能力を提供します。ウェアハウスによって提供されるコンピューティングリソースを微調整すると、クエリまたは一連のクエリのパフォーマンスを向上させることができます。

ウェアハウスの所有者または管理者は、1つ以上のクエリのパフォーマンスを向上させるために、次のウェアハウス関連の戦略を試すことができます。これらの戦略のいずれかに基づいてウェアハウスを調整すると、クエリを再実行し、 実行時間をチェック することで変更をテストできます。

ウェアハウス関連の戦略は、クエリのパフォーマンスを向上させる1つの方法にすぎません。データの格納方法が関与するパフォーマンス戦略については、 パフォーマンスに対するストレージの最適化 をご参照ください。

戦略

説明

キューを減らす

クエリを開始する前にキューで待機する必要がある場合は、クエリを送信してから結果を取得するまでの時間が長くなるため、キューの待機を最小限に抑えるとパフォーマンスが向上する可能性があります。

メモリスピルを解決する

ウェアハウスが利用できるメモリを調整すると、パフォーマンスが向上する可能性があります。これは、ウェアハウスのメモリが不足すると、クエリの実行が大幅に遅くなり、ストレージにバイトが「スピルする」からです。

ウェアハウスサイズを拡大する

ウェアハウスが大きくなればなるほど、クエリまたは一連のクエリを実行するために使用できるコンピューティングリソースが増えます。

クエリアクセラレーションを試行する

Query Acceleration Serviceは、クエリ処理の一部をサーバーレスコンピューティングリソースにオフロードします。これにより、ウェアハウスのコンピューティングリソースに対する需要を減らしながら、クエリの処理を高速化します。

ウェアハウスキャッシュを最適化する

クエリがテーブルからではなくウェアハウスのキャッシュから読み取ることができる場合は、クエリのパフォーマンスが向上します。

同時実行クエリを制限する

ウェアハウスで同時に実行されるクエリの数を制限すると、ウェアハウスのリソースを要求するクエリが少なくなるため、パフォーマンスを向上させることができます。

ちなみに

ウェアハウスが同様のワークロードを実行している場合、クエリパフォーマンスのためにウェアハウスを最適化することはより簡単になります。たとえば、ウェアハウスが大幅に異なるクエリを実行する場合、パフォーマンス向上のコストは、最適化のメリットを受けないクエリで浪費される可能性があります。

ワークロードを組織のウェアハウスに分散するための一般的なガイドラインについては、 Snowflakeのコンピューティングリソースの管理 (Snowflakeブログ)の「ワークロードの分析」セクションをご参照ください。