Snowflake

Snowflake Multi-cluster Warehouse: Practical Guide

2026-03-26
更新: 2026-03-27
NicheeLab Editorial Team

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.

How It Works

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] 停止

CREATE WAREHOUSE Syntax

-- 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;

Standard vs Economy Comparison

AspectStandardEconomy
When clusters are addedStarted immediately when queuing is detectedStarted only after queuing persists for ~6 minutes
When clusters are shut downStopped after 2-3 consecutive checks confirm reduced loadStopped after 6 consecutive checks confirm reduced load
Response timeShort (scales immediately)Longer (waits before scaling)
Cost efficiencyHigher (aggressively adds clusters)Best (adds only the minimum needed)
Recommended use casesBI dashboards, interactive analyticsBatch processing, scheduled jobs
SLA sensitivityHigh (user-experience focused)Medium (some queuing acceptable)

Diagnosing and Resolving Queuing

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;

Queuing Remediation Checklist

ActionEffectCost impact
Increase MAX_CLUSTER_COUNTAdds concurrency capacityMore credits consumed at peak
Switch SCALING_POLICY to STANDARDFaster response when adding clustersSlight increase
Workload isolation (dedicated warehouses)Eliminates cross-workload interferenceCost scales with number of warehouses
Query Acceleration ServiceSpeeds up large-scan queriesServerless Credit
Query optimizationShortens individual query runtimeNone (developer effort only)

Tuning Parameters in Production

-- クラスタ数の変更(即時反映)
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';

Monitoring

-- ウェアハウスの負荷履歴(クラスタ稼働状況)
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;

Design Patterns

  • Separate warehouses for BI and ETL: Put interactive queries (Standard / high MAX_CLUSTER_COUNT) and batch ETL (Economy / large size) on different warehouses to eliminate cross-workload interference.
  • MIN_CLUSTER_COUNT = 1 for cost optimization: Run just one cluster at idle and let AUTO_SUSPEND shut the warehouse down completely.
  • Fixed cluster count (MIN = MAX) for predictable cost: Useful when you need to forecast peak credit consumption, at the cost of flexibility under varying load.
  • Combine with Resource Monitors: Configure a generous MAX_CLUSTER_COUNT but cap credit consumption via Resource Monitors to prevent budget overruns.

Check Your Understanding

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?

  1. Scale the warehouse size up from X-SMALL to X-LARGE
  2. Increase MAX_CLUSTER_COUNT and set SCALING_POLICY to STANDARD
  3. Set AUTO_SUSPEND = 0 to keep the warehouse always running
  4. Add Clustering Keys to every table to improve query performance

正解: 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.

Frequently Asked Questions

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.

Check what you learned with practice questions

Practice with certification-focused question sets

無料で問題を解いてみる
Author

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.


Related articles
Snowflake

Snowflake Certifications: All 11 Exams Explained (2026)

Every SnowPro certification — Associate, Core, Specialty, Ad...

Snowflake

Snowflake Exam Difficulty Ranking: All 11 Certs Compared (2026)

All 11 SnowPro exams ranked by difficulty with study-time es...

Snowflake

Snowflake Study Guide: Fastest Pass Route by Exam (2026)

How to pass SnowPro certifications efficiently — official ma...

Snowflake

SnowPro Core (COF-C03): Complete Exam Guide (2026)

Pass the SnowPro Core exam — six domains, scope, sample ques...

Snowflake

SnowPro Associate Platform (SOL-C01): Complete Guide (2026)

The entry-level SnowPro Associate exam — scope, weighting, s...

Browse all Snowflake articles (103)
© 2026 NicheeLab All rights reserved.