[Snowflake] Multi-cluster Warehouses

차지예·2026년 6월 9일

Snowflake

목록 보기
32/49
post-thumbnail

PART 1. 사이즈별 크레딧

핵심 규칙: 한 단계 커질 때마다 크레딧 2배 (XS=1 부터 시작)

사이즈시간당 크레딧
X-Small1
Small2
Medium4
Large8
X-Large16
2X-Large32
3X-Large64
4X-Large128
5X-Large256
6X-Large512

🎯 암기법: 1·2·4·8 만 외우고 2배씩 → 1, 2, 4, 8, 16, 32, 64, 128...
XS=1, M=4, L=8, XL=16 이 시험에 가장 자주 나옴.

⚠️ 빌링(과금) 규칙 🔥🔥

  • 컴퓨팅 리소스 프로비저닝의 최소 과금은 1분(60초)
  • 첫 60초 이후의 모든 과금은 초당(per-second) 으로 이뤄짐 (모든 컴퓨팅 리소스 종료 시까지)
  • "시작 / 재개(resume) / 리사이즈" 시 60초 최소 과금 적용

🎯 핵심: 최초 60초 최소 과금 → 이후 초당 과금


PART 2. Scaling UP vs Scaling OUT

구분Scaling UP (Resize)Scaling OUT (Multi-cluster)
방향수직 (사이즈 ↑)수평 (클러스터 수 ↑)
목적느린 쿼리 성능 / 데이터 로딩동시성(concurrency) — 동시 사용자·쿼리
방법ALTER WAREHOUSE ... SET WAREHOUSE_SIZEMIN/MAX_CLUSTER_COUNT
Edition모든 에디션Enterprise 이상

🎯 시험 함정: "쿼리가 느리다" → Scale UP / "동시 사용자가 많아 큐잉된다" → Scale OUT

Scaling UP (리사이즈) 동작

  • 리사이즈는 실행 중인 쿼리에 영향 없음 → 추가 리소스는 큐 대기 쿼리 + 신규 쿼리에 사용
  • 사이즈 축소 시 → 웨어하우스 캐시 삭제(clear)
ALTER WAREHOUSE MY_WH SET WAREHOUSE_SIZE=LARGE;

PART 3. 멀티클러스터 모드 (Maximized vs Auto-scale )

모드조건동작
MaximizedMIN = MAX (단, >1)시작 시 모든 클러스터 동시 실행
Auto-scaleMIN < MAX부하에 따라 동적으로 시작/종료
MIN=4 & MAX=4  →  Maximized
MIN=1 & MAX=4  →  Auto-scale

🎯 핵심 1: MIN=MAX → Maximized / MIN≠MAX → Auto-scale
🎯 핵심 2: Scaling Policy는 Auto-scale 모드에서만 적용!
(Maximized는 항상 다 켜져 있어 정책 불필요)


PART 4. Scaling Policy: STANDARD vs ECONOMY

구분STANDARD (기본값)ECONOMY
우선순위성능 (큐잉 최소화)비용 (크레딧 절약)
클러스터 시작쿼리 큐잉 시 즉시 추가6분 이상 바쁠 부하 예상 시에만
클러스터 종료낮은 부하 지속 후 가장 한가한 것 종료남은 작업 6분 미만 추정 시 종료 표시
트레이드오프크레딧 더 소비큐 지연 가능
CREATE WAREHOUSE MY_MCW_1
MIN_CLUSTER_COUNT=1
MAX_CLUSTER_COUNT=4
SCALING_POLICY=STANDARD;

ALTER WAREHOUSE MY_MCW_1 SET SCALING_POLICY=ECONOMY;

🎯 숫자 암기: ECONOMY = "6분" (시작도 6분, 종료 판단도 6분). STANDARD = 즉시.
🎯 참고: 클러스터 수 >10이면 한 번에 여러 개 시작/종료, ≤10이면 1개씩.


PART 5. 멀티클러스터 빌링

핵심: 총 비용 = 실행 중인 모든 개별 클러스터 크레딧의 합

  • 최대 크레딧/시간 = (사이즈 크레딧) × (MAX_CLUSTER_COUNT)
  • 예시: Medium(4) × 3 클러스터 = 12 크레딧/시간 (최대치)
  • Auto-scale은 수요 변동 → 보통 최대치의 일부(fraction)만 소비

공식 계산 예시:
3X-Large 멀티클러스터가 1시간 동안 1개 클러스터, 다음 1시간 동안 2개 클러스터 실행
→ 총 청구 크레딧 = 192 (= 64 + 128)

🎯 계산 공식: 각 시간대마다 (실행된 클러스터 수 × 사이즈 크레딧) 을 더한다.


PART 6. 동시성·타임아웃 속성 (기본값🔥🔥)

속성기본값의미핵심 구분
MAX_CONCURRENCY_LEVEL8한 클러스터에서 동시 실행 가능 SQL 문 수초과 시 큐잉 or 컴퓨팅 추가
STATEMENT_QUEUED_TIMEOUT_IN_SECONDS0 (무한)큐 대기 중 취소되기까지 시간대기 타임아웃
STATEMENT_TIMEOUT_IN_SECONDS172800 (2일)실행 중 문이 취소되기까지 시간실행 타임아웃
CREATE WAREHOUSE MY_MED_WH MAX_CONCURRENCY_LEVEL=6;
CREATE WAREHOUSE MY_MED_WH STATEMENT_QUEUED_TIMEOUT_IN_SECONDS=60;
CREATE WAREHOUSE MY_MED_WH STATEMENT_TIMEOUT_IN_SECONDS=600;

🎯 함정 구분: QUEUED_TIMEOUT = 대기(큐) / STATEMENT_TIMEOUT = 실행(running)
🎯 기본값: 동시성=8, 큐타임아웃=0(무제한), 실행타임아웃=172800초(2일)
🎯 두 타임아웃 모두 account/user/session/warehouse 레벨 설정 가능
가장 낮은 레벨의 0이 아닌 값이 우선


PART 7. CREATE WAREHOUSE 주요 기본값

속성기본값비고
WAREHOUSE_SIZEXSMALL
AUTO_SUSPEND600초 (10분)0/NULL = 절대 안 멈춤(권장X)
AUTO_RESUMETRUE쿼리 제출 시 자동 재개
MAX_CLUSTER_COUNT1>1 → 멀티클러스터(Enterprise)
MIN_CLUSTER_COUNT1
SCALING_POLICYSTANDARD
INITIALLY_SUSPENDEDFALSE
WAREHOUSE_TYPESTANDARD(or Snowpark-optimized)

🎯 AUTO_SUSPEND 함정: 백그라운드 일시중단 체크는 약 30초마다 실행 → 정밀 제어용 아님.
30 미만 / 30 배수 아닌 값은 의도대로 동작 안 할 수 있음.
🎯 캐시 함정: AUTO_SUSPEND 되면 → 웨어하우스 캐시 사라짐 → 재개 시 캐시 다시 채워야 함(콜드 스타트).
리포팅/분석용은 자주 멈추지 않게 주의.


✅ 키워드

[사이즈]   XS=1, S=2, M=4, L=8, XL=16 ... (2배씩, 6XL=512)
[빌링]     최소 60초 → 이후 초당 과금
[UP/OUT]   UP=성능/느린쿼리, OUT=동시성(Enterprise)
[모드]     MIN=MAX→Maximized, MIN<MAX→Auto-scale
[정책]     STANDARD=즉시(성능,기본) / ECONOMY=6분(비용)
           ※ 정책은 Auto-scale에서만 적용
[멀티빌링] MAX 크레딧 = 사이즈크레딧 × MAX클러스터수
[기본값]   동시성=8, 큐타임아웃=0, 실행타임아웃=172800(2일)
           AUTO_SUSPEND=600(10분), AUTO_RESUME=TRUE
           기본사이즈=XSMALL, 기본정책=STANDARD

0개의 댓글