A Multi-cluster Warehouse is a Snowflake warehouse that dynamically starts and stops multiple compute clusters to scale out concurrency. The mental model is simple: control individual query speed with warehouse size (scale up), and control the number of queries that can run concurrently with Multi-cluster (scale out). The feature requires Enterprise Edition or higher.
A normal warehouse consists of a single cluster. With a Multi-cluster Warehouse, you set MIN_CLUSTER_COUNT and MAX_CLUSTER_COUNT, and Snowflake automatically launches additional clusters when concurrent queries exceed the existing capacity. When load decreases, unused clusters are shut down automatically.
同時実行クエリが増加した場合の動作:
[クラスタ1] ■■■■ 4クエリ実行中
↓ キューイング検知
[クラスタ1] ■■■■ [クラスタ2] ■■ 追加起動
↓ さらに増加
[クラスタ1] ■■■■ [クラスタ2] ■■■■ [クラスタ3] ■■ 追加起動
負荷が減少した場合:
[クラスタ1] ■■ [クラスタ2] 停止 [クラスタ3] 停止-- BIダッシュボード向け:レスポンス重視
CREATE WAREHOUSE bi_dashboard_wh
WAREHOUSE_SIZE = 'MEDIUM'
MIN_CLUSTER_COUNT = 1
MAX_CLUSTER_COUNT = 6
SCALING_POLICY = 'STANDARD'
AUTO_SUSPEND = 300
AUTO_RESUME = TRUE
INITIALLY_SUSPENDED = TRUE;
-- バッチETL向け:コスト重視
CREATE WAREHOUSE batch_etl_wh
WAREHOUSE_SIZE = 'LARGE'
MIN_CLUSTER_COUNT = 1
MAX_CLUSTER_COUNT = 3
SCALING_POLICY = 'ECONOMY'
AUTO_SUSPEND = 60
AUTO_RESUME = TRUE;
-- 常時稼働(MIN = MAX で固定クラスタ数)
CREATE WAREHOUSE always_on_wh
WAREHOUSE_SIZE = 'SMALL'
MIN_CLUSTER_COUNT = 3
MAX_CLUSTER_COUNT = 3
AUTO_SUSPEND = 0
AUTO_RESUME = TRUE;| Aspect | Standard | Economy |
|---|---|---|
| When clusters are added | Started immediately when queuing is detected | Started only after queuing persists for ~6 minutes |
| When clusters are shut down | Stopped after 2-3 consecutive checks confirm reduced load | Stopped after 6 consecutive checks confirm reduced load |
| Response time | Short (scales immediately) | Longer (waits before scaling) |
| Cost efficiency | Higher (aggressively adds clusters) | Best (adds only the minimum needed) |
| Recommended use cases | BI dashboards, interactive analytics | Batch processing, scheduled jobs |
| SLA sensitivity | High (user-experience focused) | Medium (some queuing acceptable) |
Queuing happens when every cluster in the warehouse is busy and new queries are forced to wait in line. It translates directly into degraded user response times, so use the following steps to identify and fix the root cause.
-- キューイングが発生しているクエリの確認
SELECT
query_id,
warehouse_name,
user_name,
queued_overload_time,
total_elapsed_time,
execution_time,
query_text
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
WHERE queued_overload_time > 0
AND start_time >= DATEADD(HOUR, -24, CURRENT_TIMESTAMP())
ORDER BY queued_overload_time DESC
LIMIT 20;
-- ウェアハウスの負荷パターンを時間帯別に分析
SELECT
DATE_TRUNC('HOUR', start_time) AS hour_slot,
warehouse_name,
COUNT(*) AS query_count,
AVG(queued_overload_time) / 1000 AS avg_queue_sec,
MAX(queued_overload_time) / 1000 AS max_queue_sec
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
WHERE start_time >= DATEADD(DAY, -7, CURRENT_TIMESTAMP())
AND warehouse_name = 'BI_DASHBOARD_WH'
GROUP BY 1, 2
ORDER BY hour_slot;| Action | Effect | Cost impact |
|---|---|---|
| Increase MAX_CLUSTER_COUNT | Adds concurrency capacity | More credits consumed at peak |
| Switch SCALING_POLICY to STANDARD | Faster response when adding clusters | Slight increase |
| Workload isolation (dedicated warehouses) | Eliminates cross-workload interference | Cost scales with number of warehouses |
| Query Acceleration Service | Speeds up large-scan queries | Serverless Credit |
| Query optimization | Shortens individual query runtime | None (developer effort only) |
-- クラスタ数の変更(即時反映)
ALTER WAREHOUSE bi_dashboard_wh SET
MIN_CLUSTER_COUNT = 2
MAX_CLUSTER_COUNT = 10;
-- スケーリングポリシーの変更
ALTER WAREHOUSE bi_dashboard_wh SET
SCALING_POLICY = 'ECONOMY';
-- ウェアハウスサイズの変更(次のクエリ実行時に反映)
ALTER WAREHOUSE bi_dashboard_wh SET
WAREHOUSE_SIZE = 'LARGE';-- ウェアハウスの負荷履歴(クラスタ稼働状況)
SELECT
start_time,
end_time,
warehouse_name,
avg_running,
avg_queued_load,
avg_queued_provisioning,
avg_blocked
FROM SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_LOAD_HISTORY
WHERE start_time >= DATEADD(DAY, -7, CURRENT_TIMESTAMP())
AND warehouse_name = 'BI_DASHBOARD_WH'
ORDER BY start_time DESC;
-- クレジット消費の推移
SELECT
start_time::DATE AS usage_date,
warehouse_name,
SUM(credits_used) AS total_credits,
SUM(credits_used_compute) AS compute_credits,
SUM(credits_used_cloud_services) AS cloud_credits
FROM SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY
WHERE start_time >= DATEADD(MONTH, -1, CURRENT_TIMESTAMP())
AND warehouse_name = 'BI_DASHBOARD_WH'
GROUP BY 1, 2
ORDER BY usage_date DESC;Performance Optimization
問題 1
On Enterprise Edition, 500 BI analysts use the same dashboards concurrently. At peak times, queries queue frequently and dashboard response is slow. Individual queries, however, complete in 1-3 seconds. Which is the most appropriate remediation?
正解: B
Individual queries already complete in 1-3 seconds, so the issue is insufficient concurrency causing queuing — a scale-out problem. Increasing MAX_CLUSTER_COUNT raises the number of queries that can run in parallel and eliminates queuing. SCALING_POLICY = STANDARD ensures new clusters spin up as soon as queuing is detected. A (scale up) is the fix for slow individual queries, which is not the situation here. C (always on) does not address queuing unless you also raise the cluster count. D (Clustering Keys) improves partition pruning and is unrelated to concurrency issues.
When should I use Standard vs Economy scaling policy?
Standard spins up additional clusters as soon as queries start queuing, making it ideal for latency-sensitive workloads such as BI dashboards and interactive analytics. Economy only adds a cluster after queuing has persisted for a while, which suits cost-optimized batch processing and scheduled jobs. Snowflake's official docs note that Economy uses roughly 6 minutes of continued queuing as the threshold for adding a cluster.
Does a large MAX_CLUSTER_COUNT setting increase cost?
The MAX_CLUSTER_COUNT value itself does not increase cost. Credits are only charged for the time clusters are actually running. With MAX_CLUSTER_COUNT = 10, only 1-2 clusters will actually start if concurrency is low. That said, many clusters could spin up simultaneously during peak load, so it is recommended to set credit-consumption caps with Resource Monitors to prevent runaway cost.
How is a Multi-cluster Warehouse different from scaling up the warehouse size?
Increasing warehouse size (XS to S to M to L) is scaling up, which makes individual queries faster. It helps when single queries are slow due to large scans or complex joins. A Multi-cluster Warehouse is scaling out, which increases the number of queries that can run concurrently. It helps when individual queries are fast but many users are competing for the warehouse and causing queuing. The two solve different problems, so you should analyze Query Profile and QUERY_HISTORY to pick the right one.
Practice with certification-focused question sets
無料で問題を解いてみるNicheeLab Editorial Team
NicheeLab editorial team focused on data engineering and cloud certification learning. Content is structured around practical study needs and official exam domains.
Snowflake Certifications: All 11 Exams Explained (2026)
Every SnowPro certification — Associate, Core, Specialty, Ad...
Snowflake Exam Difficulty Ranking: All 11 Certs Compared (2026)
All 11 SnowPro exams ranked by difficulty with study-time es...
Snowflake Study Guide: Fastest Pass Route by Exam (2026)
How to pass SnowPro certifications efficiently — official ma...
SnowPro Core (COF-C03): Complete Exam Guide (2026)
Pass the SnowPro Core exam — six domains, scope, sample ques...
SnowPro Associate Platform (SOL-C01): Complete Guide (2026)
The entry-level SnowPro Associate exam — scope, weighting, s...