Snowflake

Virtual Warehouseとは?コンピュート管理

2026-03-21
更新: 2026-03-27
NicheeLab編集部

Virtual Warehouseは、Snowflakeの三層アーキテクチャにおけるCompute Layer(コンピュートレイヤー)を構成する独立したコンピュートクラスターです。SQLクエリの実行・データロード・データ変換など、すべてのコンピュート処理はVirtual Warehouse上で行われます。Storage Layerとは完全に分離されており、用途に応じて複数のWarehouseを独立して作成・サイジング・管理できます。

Virtual Warehouseの基本アーキテクチャ

Virtual Warehouseは、クラウドプロバイダー(AWS/Azure/GCP)上に動的に確保されるコンピュートリソースの集合です。各Warehouseは完全に独立しており、あるWarehouseの負荷が他のWarehouseに影響することはありません。

  • ストレージ分離:全WarehouseがStorage Layerの同一データにアクセスでき、データの複製は不要
  • 弾力性:サイズ変更が即座に反映され、ダウンタイムなし
  • 独立性:Warehouse間のリソース競合がなく、ワークロードの分離が容易
  • 従量課金:稼働時間に応じたクレジット消費で、サスペンド中はコストゼロ

サイズ比較表(XS〜6XL)

Warehouseサイズは8段階で、1段階上がるとコンピュートリソースとクレジット消費が約2倍になります。

サイズクレジット/時間ノード数(相対値)推奨ワークロード
X-Small(XS)11開発・テスト・軽量分析・SnowSQL操作
Small(S)22中規模分析・小規模ETL
Medium(M)44中〜大規模分析・BIツール接続
Large(L)88大規模ETL・レポーティング
X-Large(XL)1616大規模バッチ処理
2X-Large(2XL)3232超大規模バッチ・複雑なJOIN
3X-Large(3XL)6464エンタープライズ規模のデータ処理
4X-Large〜6X-Large128〜512128〜512超大規模データ処理(特殊用途)

課金は最低60秒単位で開始され、60秒経過後は秒単位の従量課金になります。レジューム後すぐにサスペンドしても60秒分のクレジットが消費される点に注意が必要です。

Warehouseの作成と変更

-- Warehouseの作成
CREATE OR REPLACE WAREHOUSE analytics_wh
  WAREHOUSE_SIZE = 'MEDIUM'
  AUTO_SUSPEND = 120
  AUTO_RESUME = TRUE
  MIN_CLUSTER_COUNT = 1
  MAX_CLUSTER_COUNT = 1
  INITIALLY_SUSPENDED = TRUE
  COMMENT = 'アナリスト用の分析Warehouse';

-- サイズ変更(即座に反映、ダウンタイムなし)
ALTER WAREHOUSE analytics_wh
  SET WAREHOUSE_SIZE = 'LARGE';

-- Auto-suspend設定の変更
ALTER WAREHOUSE analytics_wh
  SET AUTO_SUSPEND = 60;

-- 手動サスペンド・レジューム
ALTER WAREHOUSE analytics_wh SUSPEND;
ALTER WAREHOUSE analytics_wh RESUME;

Auto-suspend / Auto-resume

Auto-suspendとAuto-resumeは、Warehouseのコスト管理で最も基本的かつ効果的な設定です。

Auto-suspend

指定した秒数だけWarehouseがアイドル状態になると、自動的にサスペンドされます。サスペンド中はクレジットを一切消費しません。デフォルトは600秒(10分)です。

Auto-resume

サスペンド中のWarehouseにクエリが投入されると、自動的にレジューム(再開)されます。デフォルトで有効化されています。レジュームには数秒〜数十秒かかるため、レイテンシに敏感なワークロードでは常時稼働を検討します。

ワークロード別の推奨設定

ワークロード推奨Auto-suspend理由
アドホック分析60〜120秒断続的なクエリパターン。短い設定でコスト削減
ダッシュボード / BI300〜600秒連続的なクエリが来やすい。頻繁なresume/suspendを避ける
ETLバッチ60秒処理完了後すぐにサスペンド
Snowpipe連携(Snowpipeはサーバーレス)Warehouse不要

Warehouse Cache(ローカルディスクキャッシュ)

Warehouseは実行中にStorage Layerから読み込んだマイクロパーティションをローカルSSD上にキャッシュします。同じデータへの2回目以降のアクセスはキャッシュから高速に読み込まれます。

  • サスペンドするとWarehouse Cacheはクリアされる
  • レジューム後の最初のクエリはキャッシュが空のためStorage Layerからフルスキャンが必要
  • Auto-suspendを短くしすぎると、キャッシュヒット率が低下し逆にパフォーマンスが悪化する場合がある

Multi-cluster Warehouse

Multi-cluster Warehouseは、同一Warehouseのコンピュートクラスターを複数並行稼働させる機能です。Enterprise Edition以上で利用可能で、同時実行クエリ数の増加によるキューイングを防止します。

スケールアップ vs スケールアウト

方式方法効果ユースケース
スケールアップWarehouseサイズを拡大(例:M→L)個々のクエリの処理能力が向上複雑なクエリ・大量データスキャン
スケールアウトMulti-clusterでクラスター数を増加同時実行クエリ数の上限が拡大多数のユーザーによる同時アクセス

Multi-cluster Warehouseの作成

-- Multi-cluster Warehouse(最大3クラスター、Standardポリシー)
CREATE OR REPLACE WAREHOUSE dashboard_wh
  WAREHOUSE_SIZE = 'MEDIUM'
  MIN_CLUSTER_COUNT = 1
  MAX_CLUSTER_COUNT = 3
  SCALING_POLICY = 'STANDARD'
  AUTO_SUSPEND = 300
  AUTO_RESUME = TRUE;

-- Economyポリシーに変更
ALTER WAREHOUSE dashboard_wh
  SET SCALING_POLICY = 'ECONOMY';

スケーリングポリシー

ポリシークラスター追加タイミング優先事項
Standard(デフォルト)キューイング発生時にすぐ追加パフォーマンス優先
Economy既存クラスター稼働率が高まってから追加コスト優先

コスト最適化のベストプラクティス

用途別にWarehouseを分離する

-- ETL用(大きめ、短時間Auto-suspend)
CREATE WAREHOUSE etl_wh
  WAREHOUSE_SIZE = 'LARGE'
  AUTO_SUSPEND = 60
  AUTO_RESUME = TRUE;

-- 分析用(中サイズ、中程度のAuto-suspend)
CREATE WAREHOUSE analytics_wh
  WAREHOUSE_SIZE = 'MEDIUM'
  AUTO_SUSPEND = 300
  AUTO_RESUME = TRUE;

-- 開発用(最小、短時間Auto-suspend)
CREATE WAREHOUSE dev_wh
  WAREHOUSE_SIZE = 'XSMALL'
  AUTO_SUSPEND = 60
  AUTO_RESUME = TRUE;

リソースモニターによる予算管理

-- リソースモニターの作成
CREATE RESOURCE MONITOR monthly_budget
  WITH CREDIT_QUOTA = 500
  FREQUENCY = MONTHLY
  START_TIMESTAMP = IMMEDIATELY
  TRIGGERS
    ON 75 PERCENT DO NOTIFY
    ON 90 PERCENT DO SUSPEND
    ON 100 PERCENT DO SUSPEND_IMMEDIATE;

-- Warehouseにリソースモニターを適用
ALTER WAREHOUSE analytics_wh
  SET RESOURCE_MONITOR = monthly_budget;

WAREHOUSE_METERING_HISTORYによるコスト分析

-- 過去30日間のWarehouse別クレジット消費
SELECT
  warehouse_name,
  SUM(credits_used)         AS total_credits,
  SUM(credits_used_compute) AS compute_credits,
  SUM(credits_used_cloud_services) AS cs_credits
FROM SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY
WHERE start_time >= DATEADD(DAY, -30, CURRENT_TIMESTAMP())
GROUP BY warehouse_name
ORDER BY total_credits DESC;

クエリパフォーマンスの診断

  • Spillingの確認:Query ProfileでBytes Spilled to Local/Remote Storageが表示される場合、Warehouseサイズのスケールアップを検討
  • Queueingの確認:QUERY_HISTORYでqueued_provisioning_timeやqueued_overload_timeが長い場合、Multi-clusterの導入またはクラスター数の増加を検討
  • キャッシュ活用:同一Warehouseで繰り返し実行されるクエリはWarehouse CacheとResult Cacheの恩恵を受ける

問題で確認

Virtual Warehouse

問題 1

100人のアナリストがBIダッシュボードから同時にクエリを実行しており、キューイングが頻発している。個々のクエリは軽量で、Warehouseサイズの拡大ではキューイングが解消されない。最も適切な対処はどれか。

  1. Warehouseサイズを6XLに拡大して個々のクエリの処理速度を上げる
  2. Multi-cluster WarehouseのMAX_CLUSTER_COUNTを増やしてスケールアウトする
  3. Auto-suspendを0秒に設定してWarehouseを常時起動する
  4. Result Cacheの有効期限を延長してクエリ実行回数を減らす

正解: B

キューイングは同時実行クエリ数がWarehouseの処理能力を超えた場合に発生します。個々のクエリが軽量でサイズ拡大(スケールアップ)では解消しない場合、Multi-cluster WarehouseのMAX_CLUSTER_COUNTを増やしてクラスター数をスケールアウトすることで、同時処理可能なクエリ数が増加しキューイングが解消されます。Auto-suspend = 0はサスペンドしない設定ではなくアイドル時に即サスペンドする設定です。Result Cacheは同一クエリの繰り返しには有効ですが、異なるクエリのキューイング解消にはなりません。

よくある質問

Warehouseのサイズを変更する際にダウンタイムは発生しますか?

いいえ、Warehouseのサイズ変更にダウンタイムは発生しません。ALTER WAREHOUSE SET WAREHOUSE_SIZE で即座にリサイズが反映されます。実行中のクエリがある場合、リサイズは次のクエリから適用されます(WAIT_FOR_COMPLETION オプションで制御可能)。ただしサイズ変更時にWarehouse Cache(ローカルディスクキャッシュ)は維持されますが、新しいノードにはキャッシュがないため、直後のクエリではキャッシュミスが増える可能性があります。

Multi-cluster WarehouseのStandardポリシーとEconomyポリシーの使い分けは?

Standardポリシーはクエリのキューイング(待ち行列)が発生するとすぐにクラスターを追加し、パフォーマンスを最優先します。ダッシュボード閲覧のように応答時間が重要なワークロードに適しています。Economyポリシーは既存クラスターの稼働率が十分に高くなるまでクラスター追加を遅らせ、コストを最優先します。バッチ処理のように多少のキューイングを許容できるワークロードに適しています。

WarehouseのAuto-suspendを0秒に設定するとどうなりますか?

AUTO_SUSPEND = 0 はWarehouseが「一切自動サスペンドしない」設定ではなく、「アイドル状態になった直後にサスペンドする」設定です。つまりクエリ完了と同時にサスペンドが開始されます。ただし最低課金単位が60秒のため、60秒以内に次のクエリが来ると再度レジュームが発生し、都度60秒分の課金が発生します。断続的なクエリパターンでは60〜300秒程度に設定した方がコスト効率が良くなります。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Snowflake

Snowflake資格一覧|全11試験(SnowPro)の難易度・費用

Snowflake認定資格(SnowPro)全11試験の一覧・難易度・費用・出題範囲を徹底解説。...

Snowflake

Snowflake試験の難易度ランキング|全11資格を徹底比較

Snowflake(SnowPro)認定全11試験の難易度をランキング形式で比較。学習時間・合格に必要なスキルから分析。...

Snowflake

Snowflake資格の勉強方法|効率的な学習ルートと合格のコツ

Snowflake認定資格(SnowPro)に最短で合格するための勉強方法。公式リソース・学習スケジュールを徹底ガイド。...

Snowflake

SnowPro Core試験完全解説|出題範囲・問題例・合格戦略

SnowPro Core Certification(COF-C03)を徹底解説。出題範囲・100問の試験形式・合格ライ...

Snowflake

SnowPro Platform Associate完全解説|入門試験の攻略

SnowPro Associate: Platform Certification(SOL-C01)を徹底解説。最も簡単...

Snowflakeの記事一覧 (102件)
© 2026 NicheeLab All rights reserved.