Virtual Warehouseは、Snowflakeの三層アーキテクチャにおけるCompute Layer(コンピュートレイヤー)を構成する独立したコンピュートクラスターです。SQLクエリの実行・データロード・データ変換など、すべてのコンピュート処理はVirtual Warehouse上で行われます。Storage Layerとは完全に分離されており、用途に応じて複数のWarehouseを独立して作成・サイジング・管理できます。
Virtual Warehouseは、クラウドプロバイダー(AWS/Azure/GCP)上に動的に確保されるコンピュートリソースの集合です。各Warehouseは完全に独立しており、あるWarehouseの負荷が他のWarehouseに影響することはありません。
Warehouseサイズは8段階で、1段階上がるとコンピュートリソースとクレジット消費が約2倍になります。
| サイズ | クレジット/時間 | ノード数(相対値) | 推奨ワークロード |
|---|---|---|---|
| X-Small(XS) | 1 | 1 | 開発・テスト・軽量分析・SnowSQL操作 |
| Small(S) | 2 | 2 | 中規模分析・小規模ETL |
| Medium(M) | 4 | 4 | 中〜大規模分析・BIツール接続 |
| Large(L) | 8 | 8 | 大規模ETL・レポーティング |
| X-Large(XL) | 16 | 16 | 大規模バッチ処理 |
| 2X-Large(2XL) | 32 | 32 | 超大規模バッチ・複雑なJOIN |
| 3X-Large(3XL) | 64 | 64 | エンタープライズ規模のデータ処理 |
| 4X-Large〜6X-Large | 128〜512 | 128〜512 | 超大規模データ処理(特殊用途) |
課金は最低60秒単位で開始され、60秒経過後は秒単位の従量課金になります。レジューム後すぐにサスペンドしても60秒分のクレジットが消費される点に注意が必要です。
-- 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は、Warehouseのコスト管理で最も基本的かつ効果的な設定です。
指定した秒数だけWarehouseがアイドル状態になると、自動的にサスペンドされます。サスペンド中はクレジットを一切消費しません。デフォルトは600秒(10分)です。
サスペンド中のWarehouseにクエリが投入されると、自動的にレジューム(再開)されます。デフォルトで有効化されています。レジュームには数秒〜数十秒かかるため、レイテンシに敏感なワークロードでは常時稼働を検討します。
| ワークロード | 推奨Auto-suspend | 理由 |
|---|---|---|
| アドホック分析 | 60〜120秒 | 断続的なクエリパターン。短い設定でコスト削減 |
| ダッシュボード / BI | 300〜600秒 | 連続的なクエリが来やすい。頻繁なresume/suspendを避ける |
| ETLバッチ | 60秒 | 処理完了後すぐにサスペンド |
| Snowpipe連携 | (Snowpipeはサーバーレス) | Warehouse不要 |
Warehouseは実行中にStorage Layerから読み込んだマイクロパーティションをローカルSSD上にキャッシュします。同じデータへの2回目以降のアクセスはキャッシュから高速に読み込まれます。
Multi-cluster Warehouseは、同一Warehouseのコンピュートクラスターを複数並行稼働させる機能です。Enterprise Edition以上で利用可能で、同時実行クエリ数の増加によるキューイングを防止します。
| 方式 | 方法 | 効果 | ユースケース |
|---|---|---|---|
| スケールアップ | Warehouseサイズを拡大(例:M→L) | 個々のクエリの処理能力が向上 | 複雑なクエリ・大量データスキャン |
| スケールアウト | Multi-clusterでクラスター数を増加 | 同時実行クエリ数の上限が拡大 | 多数のユーザーによる同時アクセス |
-- 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 | 既存クラスター稼働率が高まってから追加 | コスト優先 |
-- 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;-- 過去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;Virtual Warehouse
問題 1
100人のアナリストがBIダッシュボードから同時にクエリを実行しており、キューイングが頻発している。個々のクエリは軽量で、Warehouseサイズの拡大ではキューイングが解消されない。最も適切な対処はどれか。
正解: 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秒程度に設定した方がコスト効率が良くなります。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Snowflake資格一覧|全11試験(SnowPro)の難易度・費用
Snowflake認定資格(SnowPro)全11試験の一覧・難易度・費用・出題範囲を徹底解説。...
Snowflake試験の難易度ランキング|全11資格を徹底比較
Snowflake(SnowPro)認定全11試験の難易度をランキング形式で比較。学習時間・合格に必要なスキルから分析。...
Snowflake資格の勉強方法|効率的な学習ルートと合格のコツ
Snowflake認定資格(SnowPro)に最短で合格するための勉強方法。公式リソース・学習スケジュールを徹底ガイド。...
SnowPro Core試験完全解説|出題範囲・問題例・合格戦略
SnowPro Core Certification(COF-C03)を徹底解説。出題範囲・100問の試験形式・合格ライ...
SnowPro Platform Associate完全解説|入門試験の攻略
SnowPro Associate: Platform Certification(SOL-C01)を徹底解説。最も簡単...