웨어하우스 개요
웨어하우스 개요
쿼리나 데이터 적재 같은 DML 작업을 실행할 준비가 되면, Snowflake는 그 연산을 수행할 컴퓨팅 리소스가 필요해요. 그 역할을 하는 단위가 바로 웨어하우스(Warehouse) 예요. 표준(Standard) 타입인지 Snowpark-optimized 타입인지로 나뉘기도 하지만, 실제로 어떤 크기로 만들지와 어떤 속성들을 켜 둘지를 정해서 웨어하우스의 활동을 통제할 수 있어요.
웨어하우스 크기
웨어하우스는 언제든지 시작·중지할 수 있고, 실행 중에도 크기를 바꿀 수 있어요. 크기(Size)는 웨어하우스의 클러스터 하나가 가질 수 있는 컴퓨팅 리소스의 양을 뜻해요. Snowflake가 지원하는 크기는 X-Small에서 시작해 6X-Large까지 있는데, 한 단계 커질수록 시간당 크레딧 사용량이 대략 두 배로 늘어나요.
| 웨어하우스 크기 | 크레딧 / 시간(Gen1) | 크레딧 / 초(Gen1) | 비고 |
|---|---|---|---|
| X-Small | 1 | 0.0003 | Snowsight 및 CREATE WAREHOUSE로 만들 때의 기본 크기 |
| Small | 2 | 0.0006 | |
| Medium | 4 | 0.0011 | |
| Large | 8 | 0.0022 | |
| X-Large | 16 | 0.0044 | Snowsight로 만들 때의 기본 크기 |
| 2X-Large | 32 | 0.0089 | |
| 3X-Large | 64 | 0.0178 | |
| 4X-Large | 128 | 0.0356 | |
| 5X-Large | 256 | 0.0711 | AWS·Azure 일반 제공, US Gov 지역은 미리보기 |
| 6X-Large | 512 | 0.1422 | AWS·Azure 일반 제공, US Gov 지역은 미리보기 |
위 표의 숫자는 1세대(Gen1) 표준 웨어하우스를 기준으로 한 값이에요. 더 새로운 2세대 표준 웨어하우스에 대해선 Snowflake generation 2 standard warehouses를, 크레딧 사용량은 Snowflake Service Consumption Table을 참고하세요. 크기를 바꾸지 않고도 처리량을 늘리는 방법으로는 멀티클러스터 웨어하우스가 있어요.
크레딧과 과금에 미치는 영향
Snowflake는 초 단위 과금을 하되 웨어하우스가 시작될 때마다 최소 60초를 부과해요. 그래서 실제로 소비한 크레딧만 청구되지요. 예를 들어 X-Small이 10분 돌아가면 약 0.167 크레딧, X-Large가 같은 시간 돌면 약 2.667 크레딧이에요. 멀티클러스터라면 크기와 그 시간 동안 실행된 클러스터 수를 곱해 계산합니다(예: 3X-Large가 1시간 클러스터 1개, 다음 1시간 클러스터 2개로 돌면 64 + 128 = 192 크레딧). 멀티클러스터는 Enterprise Edition 기능이에요.
데이터 적재 성능과의 관계
웨어하우스를 크게 만든다고 적재 성능이 항상 좋아지지는 않아요. 적재 성능은 크기보다 한 번에 읽는 파일의 수와 각 파일의 크기에 더 크게 좌우됩니다. 수백~수천 개 파일을 동시에 벌크 적재하지 않는 한, Small·Medium·Large 정도면 충분한 경우가 많아요. 더 큰 웨어하우스는 크레딧만 더 먹고 성능 향상이 없을 수 있어요.
쿼리 처리와 동시성
쿼리가 몇 개나 동시에 처리되는지는 각 쿼리의 크기와 복잡도가 결정해요. 웨어하우스는 쿼리마다 필요한 컴퓨팅 리소스를 계산해 예약하고, 남은 리소스가 부족한 쿼리는 다른 쿼리가 끝나 리소스가 비기를 기다리며 대기열에 들어가요. 이때 다음 파라미터로 처리량을 제어할 수 있어요.
STATEMENT_QUEUED_TIMEOUT_IN_SECONDSSTATEMENT_TIMEOUT_IN_SECONDS
쿼리가 너무 많이 대기한다면 웨어하우스를 하나 더 만들거나, 자동 확장을 원한다면 멀티클러스터 웨어하우스를 쓰는 걸 권장해요.
세션에서의 웨어하우스 사용
세션이 시작될 때 기본적으로 연결된 웨어하우스는 없어요. 웨어하우스가 연결되기 전까지는 그 세션에서 쿼리를 보낼 수 없지요. 그래서 Snowflake는 사용자별·클라이언트 유틸리티별 기본 웨어하우스를 지정하는 방법을 제공해요.
- 사용자 기본 웨어하우스:
CREATE USER/ALTER USER나 웹 인터페이스로 지정하면 그 사용자가 시작하는 모든 세션에 적용돼요. - 클라이언트 기본 웨어하우스: Snowflake CLI·SnowSQL은 설정 파일과 명령줄 옵션으로, JDBC·ODBC·Python 커넥터 등은 연결 파라미터로 지정할 수 있어요.
- 노트북 기본 웨어하우스: 계정마다 멀티클러스터 X-Small 웨어하우스인
SYSTEM$STREAMLIT_NOTEBOOK_WH가 자동으로 만들어져요(최대 클러스터 10개, 기본 타임아웃 60초). 노트북 워크로드 전용으로 쓰고, SQL 쿼리는 별도의 사용자 관리 웨어하우스로 돌리는 게 비용 관리에 좋아요.
기본 웨어하우스는 사용자 지정 → 클라이언트 설정 파일 → 명령줄·드라이버 파라미터 순으로 덮어써요. 세션 중에는 USE WAREHOUSE 명령으로 언제든 바꿀 수 있어요.