ホーム » データサイエンス » Snowflake » Snowflakeのクエリ結果キャッシュ(Result Cache)と仮想ウェアハウスの関係

Snowflakeのクエリ結果キャッシュ(Result Cache)と仮想ウェアハウスの関係

1. Snowflakeのアーキテクチャの基礎

Snowflakeはストレージコンピュート(仮想ウェアハウス)を完全に分離したクラウドデータウェアハウスです。

  • ストレージ層: データそのものや、クエリ結果のキャッシュ、メタデータなどが格納される。
  • コンピュート層(ウェアハウス): 実際にSQLクエリを実行したり、データの集計・分析処理を行う仮想マシン群。

2. クエリ実行時のキャッシュの種類

Snowflakeには主に3種類のキャッシュがあります。

a. Result Cache(クエリ結果キャッシュ)

  • 直近24時間以内に実行した全く同じクエリに対し、同じデータ・同じ権限であれば、計算結果だけを返す。
  • データの読み込みや演算を再実行せず、保存されたクエリ結果セットを即座に返す
  • この場合、仮想ウェアハウス(コンピュート)は不要。=> 今回の設問のポイント

b. Local Disk Cache(ローカルディスクキャッシュ)

  • 仮想ウェアハウス内で直近に利用したデータ(マイクロパーティション)を物理的にキャッシュし、パフォーマンス向上を図る。

c. Metadata Cache(メタデータキャッシュ)

  • テーブルの統計情報や、データのどこが更新されたかなどを管理し、効率的なクエリ実行を補助。

3. Result Cache(クエリ結果キャッシュ)の特徴と要件

  • 同じSQL同じデータ(更新なし)同じロール・権限同じセッションパラメータであれば、有効。
  • クエリの結果セットが24時間以内にキャッシュとして保持される。
  • キャッシュが有効な場合、仮想ウェアハウスを起動せずとも結果が即時返却される。
  • コストの節約高速なレスポンスを両立可能。

4. 仮想ウェアハウスの必要性と例外

  • Result Cache利用時: 仮想ウェアハウスは「不要」(Compute Costが発生しない)。
  • Result Cacheが使えない場合:
    • データが更新された
    • 違うSQLやパラメータ、権限で実行
    • 24時間経過後
  • これらの場合は仮想ウェアハウスが起動し、計算・データアクセスのコストが発生。

5. 運用上のポイント

  • BIツールやアプリケーションが同じクエリを繰り返し実行する場合、結果キャッシュ活用によるコスト削減が期待できる。
  • データの更新やテーブルの変更が発生した場合は、キャッシュが自動的に無効になり、再度計算が必要。

まとめ

  • Result Cache(クエリ結果キャッシュ)は、完全一致した条件下では仮想ウェアハウスなしで結果返却が可能。
  • Snowflakeの「ストレージとコンピュートの分離」を象徴する機能の一つ。

参考リンク(公式ドキュメント)


この範囲をしっかり理解しておけば、Snowflakeの運用コスト最適化やパフォーマンス設計にも役立ちます。