[Snowflake] Virtual Warehouse Overview

차지예·2026년 6월 9일

Snowflake

목록 보기
29/49
post-thumbnail

1. Virtual Warehouse란?

  • Virtual Warehouse = Snowflake의 컴퓨팅 리소스 클러스터에 대한 이름 붙은 추상화(named abstraction)

  • 💡 사용자는 named warehouse 객체와만 상호작용하고, 그 아래 실제 컴퓨팅 리소스는 직접 다루지 않음

⭐ Warehouse가 수행하는 작업

공식 문서 기준, warehouse가 running 상태여야 가능:

구분작업예시
DQL조회SELECT
DML데이터 변경INSERT, UPDATE, DELETE
Data Loading데이터 적재COPY INTO <table>
Data Unloading데이터 추출COPY INTO <location>

⚠️ 슬라이드에는 DQL(SELECT), DML(UPDATE), Data loading(COPY INTO) 3가지만 표시.
공식 문서는 여기에 Unloading(COPY INTO location)도 포함 → 함께 외우기

  • Warehouse가 실행 중이면 Snowflake 크레딧(credits)을 소비한다

2. Virtual Warehouse의 핵심 특징

(1) 무제한 확장 + 리소스 경합 없음

  • 사실상 무제한(virtually unlimited) 개수의 warehouse를 spin up / shut down 가능
  • 리소스 경합(resource contention) 없음 → 각 warehouse는 독립적 컴퓨팅 클러스터
  • 공식 문서: 각 virtual warehouse는 다른 warehouse와 컴퓨팅 리소스를 공유하지 않으며, 서로 성능에 영향을 주지 않음

(2) On-the-fly 구성 변경

  • ⭐ Warehouse 구성(configuration)은 실행 중에도(on-the-fly) 변경 가능 — size 포함
  • 공식 문서: "resized at any time, even while running"
  • 추가 리소스는 이미 실행 중인 쿼리에 영향 없음 → 프로비저닝 완료 후 대기/신규 쿼리에 사용됨

(3) 로컬 SSD 캐시

  • ⭐ Virtual Warehouse는 로컬 SSD 저장소(local SSD storage) 보유
  • Storage Layer에서 가져온 raw data를 저장하는 용도
  • 이를 통해 후속 쿼리 속도 향상 (warehouse cache 역할)

3. ⭐⭐ Warehouse 관리 SQL 명령어

슬라이드 기준 명령어 정리

-- 삭제
DROP WAREHOUSE MY_WAREHOUSE;

-- 생성 (크기 지정)
CREATE WAREHOUSE MY_MED_WH
  WAREHOUSE_SIZE = 'MEDIUM';

-- 일시 정지 (suspend)
ALTER WAREHOUSE MY_WH SUSPEND;

-- 크기 변경
ALTER WAREHOUSE MY_WH_2 SET
  WAREHOUSE_SIZE = MEDIUM;

-- 멀티클러스터 warehouse 생성
CREATE WAREHOUSE MY_WH_3
  MIN_CLUSTER_COUNT = 1
  MAX_CLUSTER_COUNT = 3
  SCALING_POLICY = STANDARD;

📌 명령어 암기 포인트

  • DROP : 삭제
  • CREATE WAREHOUSE : 생성. ⭐ 생성 시 자동으로 현재 세션의 사용 warehouse로 설정됨 (= USE WAREHOUSE와 동일 효과, 공식 문서)
  • ALTER ... SUSPEND : 일시 정지 / (재개는 RESUME)
  • ALTER ... SET WAREHOUSE_SIZE : 크기 변경 (실행 중에도 가능)
  • 기본 생성 크기: Snowsight / CREATE WAREHOUSE → X-Small (공식 문서)

4. ⭐ Warehouse Size & 크레딧

공식 문서 기준 (Gen1 기준 시간당 크레딧 — 2배씩 증가 패턴이 핵심):

SizeCredits / hour
X-Small1
Small2
Medium4
Large8
X-Large16
2X-Large32
3X-Large64
4X-Large128
5X-Large256
6X-Large512
  • ⭐ 한 단계 커질 때마다 크레딧 2배(doubling)
  • Per-second billing (초당 과금), 단 시작 시 최소 60초(60-second minimum) 과금
  • 💡 Larger ≠ 항상 faster (작고 단순한 쿼리는 큰 warehouse라도 빨라지지 않음)
  • 💡 데이터 로딩 성능은 warehouse 크기보다 파일 개수/크기의 영향이 더 큼

5. ⭐ Auto-Suspend / Auto-Resume

기능기본값동작
Auto-suspend활성(enabled)지정 시간 동안 비활성 시 자동 일시정지 → 크레딧 절약
Auto-resume활성(enabled)warehouse가 필요한 쿼리 제출 시 자동 재개
  • ⭐ Auto-suspend/resume은 개별 클러스터가 아닌 전체 warehouse에만 적용
  • 멀티클러스터 경우:
    • Auto-suspend: 최소 클러스터 수가 running 중이고 활동이 없을 때만 발생
    • Auto-resume: 전체 warehouse가 suspend된 상태일 때만 적용

6. ⭐⭐ Multi-Cluster Warehouse (Enterprise Edition 기능!)

Multi-cluster warehouse는 Enterprise Edition 이상 기능 (시험 빈출)

  • 사용자/쿼리 동시성(concurrency) 관리를 위해 컴퓨팅 리소스를 확장
  • 정의 속성:
    • MAX_CLUSTER_COUNT : 최대 클러스터 수 (1보다 커야 함)
    • MIN_CLUSTER_COUNT : 최소 클러스터 수 (max 이하)

⭐ 두 가지 모드

모드조건설명
MaximizedMIN = MAX (둘 다 1보다 큼)시작 시 모든 클러스터 동시 실행. 정적 제어
Auto-scaleMIN ≠ MAX (MAX > MIN)부하에 따라 클러스터 자동 시작/종료

⭐ Scaling Policy (Auto-scale 모드에서만 적용)

정책특징
Standard (기본값)큐잉(queuing) 최소화 우선 → 크레딧보다 추가 클러스터 시작 우선
Economy크레딧 절약 우선 → 실행 중 클러스터를 꽉 채우는 것 우선 (쿼리 대기 가능). 새 클러스터는 최소 6분 이상 바쁠 것으로 추정될 때만 시작
  • ⭐ Scaling policy는 Auto-scale 모드에서만 의미 있음 (Maximized는 모든 클러스터가 동시 실행되므로 불필요)
  • 💡 멀티클러스터는 동시성(concurrency) 향상에 적합. 느린 쿼리/데이터 로딩 성능 개선엔 → resize가 더 효과적

🎯 핵심 요약

  1. Virtual Warehouse = 컴퓨팅 리소스 클러스터 (CPU/메모리/임시 저장소)
  2. Running 시 크레딧 소비 / Per-second 과금 + 최소 60초
  3. Size 한 단계 ↑ = 크레딧 2배, 기본 = X-Small
  4. 실행 중에도 resize 가능 (on-the-fly)
  5. 로컬 SSD = warehouse 캐시
  6. Auto-suspend/resume = 기본 활성, 전체 warehouse 단위
  7. Multi-cluster = Enterprise Edition 기능
  8. Maximized(MIN=MAX) vs Auto-scale(MIN<MAX)
  9. Scaling Policy: Standard(기본, 성능 우선) vs Economy(비용 우선) → Auto-scale에서만
  10. Multi-cluster = 동시성 ↑ / resize = 성능 ↑

0개의 댓글