CREATE WAREHOUSE

CREATE WAREHOUSE

CREATE WAREHOUSE 명령은 시스템에 새 가상 웨어하우스(virtual warehouse)를 만드는 명령이에요. 가상 웨어하우스는 쿼리·DML 작업을 실행하기 위한 컴퓨트 리소스예요.

출처: CREATE WAREHOUSE

본문

시스템에 새 가상 웨어하우스를 만드는 명령입니다. 가상 웨어하우스의 초기 생성은 웨어하우스가 처음에 SUSPENDED 상태로 생성되지 않는 한 컴퓨트 리소스를 프로비저닝하는 데 시간이 걸릴 수 있어요.

이 명령은 다음 변형을 지원해요: ALTER WAREHOUSE, DESCRIBE WAREHOUSE, DROP WAREHOUSE, SHOW WAREHOUSES

Syntax

CREATE [ OR REPLACE ] WAREHOUSE [ IF NOT EXISTS ] <name>
       [ [ WITH ] objectProperties ]
       [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
       [ objectParams ]

Where:

objectProperties ::=
  WAREHOUSE_TYPE = { STANDARD | 'SNOWPARK-OPTIMIZED' | ADAPTIVE }
  WAREHOUSE_SIZE = { XSMALL | SMALL | MEDIUM | LARGE | XLARGE | XXLARGE | XXXLARGE | X4LARGE | X5LARGE | X6LARGE }
  GENERATION = { '1' | '2' }
  RESOURCE_CONSTRAINT = { STANDARD_GEN_1 | STANDARD_GEN_2 | MEMORY_1X | MEMORY_1X_x86 | MEMORY_16X | MEMORY_16X_x86 | MEMORY_64X | MEMORY_64X_x86 }
  MAX_CLUSTER_COUNT = <num>
  MIN_CLUSTER_COUNT = <num>
  SCALING_POLICY = { STANDARD | ECONOMY }
  AUTO_SUSPEND = { <num> | NULL }
  AUTO_RESUME = { TRUE | FALSE }
  INITIALLY_SUSPENDED = { TRUE | FALSE }
  RESOURCE_MONITOR = <monitor_name>
  COMMENT = '<string_literal>'
  ENABLE_QUERY_ACCELERATION = { TRUE | FALSE }
  QUERY_ACCELERATION_MAX_SCALE_FACTOR = <num>
objectParams ::=
  MAX_CONCURRENCY_LEVEL = <num>
  STATEMENT_QUEUED_TIMEOUT_IN_SECONDS = <num>
  STATEMENT_TIMEOUT_IN_SECONDS = <num>

Variant syntax

CREATE OR ALTER WAREHOUSE

이미 존재하지 않으면 새 웨어하우스를 만들고, 존재하면 기존 웨어하우스를 문에 정의된 웨어하우스로 변환해요. CREATE OR ALTER WAREHOUSE 문은 CREATE WAREHOUSE 문의 구문 규칙을 따르며 ALTER WAREHOUSE 문과 동일한 제한 사항을 가집니다.

CREATE OR ALTER WAREHOUSE <name>
     [ [ WITH ] objectProperties ]
     [ objectParams ]

objectProperties ::=
  WAREHOUSE_TYPE = { STANDARD | 'SNOWPARK-OPTIMIZED' | ADAPTIVE }
  WAREHOUSE_SIZE = { XSMALL | SMALL | MEDIUM | LARGE | XLARGE | XXLARGE | XXXLARGE | X4LARGE | X5LARGE | X6LARGE }
  GENERATION = { '1' | '2' }
  RESOURCE_CONSTRAINT = { STANDARD_GEN_1 | STANDARD_GEN_2 | MEMORY_1X | MEMORY_1X_x86 | MEMORY_16X | MEMORY_16X_x86 | MEMORY_64X | MEMORY_64X_x86 }
  MAX_CLUSTER_COUNT = <num>
  MIN_CLUSTER_COUNT = <num>
  SCALING_POLICY = { STANDARD | ECONOMY }
  AUTO_SUSPEND = { <num> | NULL }
  AUTO_RESUME = { TRUE | FALSE }
  INITIALLY_SUSPENDED = { TRUE | FALSE }
  RESOURCE_MONITOR = <monitor_name>
  COMMENT = '<string_literal>'
  ENABLE_QUERY_ACCELERATION = { TRUE | FALSE }
  QUERY_ACCELERATION_MAX_SCALE_FACTOR = <num>

objectParams ::=
  MAX_CONCURRENCY_LEVEL = <num>
  STATEMENT_QUEUED_TIMEOUT_IN_SECONDS = <num>
  STATEMENT_TIMEOUT_IN_SECONDS = <num>

Required parameters (필수 파라미터)

  • name — 가상 웨어하우스의 식별자예요. 계정에서 고유해야 합니다. 또한 식별자는 알파벳 문자로 시작해야 하고, 전체 식별자 문자열을 큰따옴표로 감싸지 않는 한 공백이나 특수 문자를 포함할 수 없어요 (예: "My object"). 큰따옴표로 감싼 식별자는 대소문자를 구분합니다. 자세한 내용은 Identifier requirements 문서를 참고하세요.

Optional properties (objectProperties)

  • WAREHOUSE_TYPE = { STANDARD | 'SNOWPARK-OPTIMIZED' | ADAPTIVE } — 웨어하우스 유형을 지정해요. 기본값: STANDARD
  • WAREHOUSE_SIZE = { XSMALL | SMALL | MEDIUM | LARGE | XLARGE | XXLARGE | XXXLARGE | X4LARGE | X5LARGE | X6LARGE } — 가상 웨어하우스의 크기를 지정해요. 크기는 웨어하우스의 각 클러스터 컴퓨트 리소스 양을 결정하고, 따라서 웨어하우스가 실행되는 동안 소비되는 크레딧 수를 결정해요. 기본값: XSMALL. Snowpark 최적화 웨어하우스의 X5LARGEX6LARGE 크기는 MEMORY_16X 리소스 제약 조건에서만 지원됩니다. X5LARGEX6LARGE 크기는 STANDARD_GEN_2 리소스 제약 조건을 사용하는 표준 웨어하우스에서는 지원되지 않아요. Snowpark 최적화 웨어하우스의 기본 크기는 MEDIUM입니다. 하이픈이 포함된 값(예: '2X-LARGE')을 사용하려면 보이는 대로 값을 작은따옴표로 감싸야 해요.
  • GENERATION = { '1' | '2' } — 표준 웨어하우스의 웨어하우스 세대를 지정해요. RESOURCE_CONSTRAINT = STANDARD_GEN_1 또는 STANDARD_GEN_2를 사용하는 대신 웨어하우스 세대를 설정하는 간단한 방법을 제공합니다. 기본값: '2' (세대 2 컴퓨트 리소스). 세대 숫자 주위에는 따옴표가 필요해요.
  • RESOURCE_CONSTRAINT = { STANDARD_GEN_1 | STANDARD_GEN_2 | MEMORY_1X | MEMORY_1X_x86 | MEMORY_16X | MEMORY_16X_x86 | MEMORY_64X | MEMORY_64X_x86 } — Snowpark 최적화 웨어하우스의 메모리·CPU 아키텍처 또는 표준 웨어하우스의 세대 1·2 기능을 지정해요. Preview Feature — Open — 1 TB 리소스 제약 조건(MEMORY_64X, MEMORY_64X_x86)은 프리뷰 기능이며 AWS 클라우드 플랫폼에서만 사용할 수 있어요. 다른 모든 MEMORY_* 리소스 제약 조건 크기는 일반 제공되며 모든 클라우드 플랫폼에서 사용할 수 있습니다. 기본값: Snowpark 최적화 웨어하우스는 MEMORY_16X. 표준 웨어하우스는 Gen2 지원 및 조직 생성 시점에 따라 다릅니다.

    표준 웨어하우스의 경우 STANDARD_GEN_1STANDARD_GEN_2 값 대신 GENERATION 파라미터를 사용하는 것을 고려하세요. GENERATION 파라미터가 더 간단합니다.

  • MAX_CLUSTER_COUNT = <num> — 멀티 클러스터 웨어하우스의 최대 클러스터 수를 지정해요. 단일 클러스터 웨어하우스의 경우 이 값은 항상 1입니다. 값 범위: 1 ~ 웨어하우스 크기에 따라 달라지는 상한. 1보다 큰 값을 지정하면 멀티 클러스터 웨어하우스임을 나타내지만, 값은 Snowflake Enterprise Edition(이상)에서만 더 높게 설정할 수 있어요. 기본값: 1 (단일 클러스터 웨어하우스).

    Snowflake Enterprise Edition(이상)의 경우 항상 1보다 큰 값을 설정해 멀티 클러스터 웨어하우스의 고가용성과 최적 성능을 유지하는 것을 권장합니다. 클러스터가 실패하는 드문 경우에도 연속성을 보장하는 데 도움이 됩니다.

  • MIN_CLUSTER_COUNT = <num> — 멀티 클러스터 웨어하우스의 최소 클러스터 수를 지정해요(멀티 클러스터 웨어하우스에만 적용). 값 범위: 1 ~ MAX_CLUSTER_COUNT. MIN_CLUSTER_COUNTMAX_CLUSTER_COUNT와 같거나 작아야 합니다. 기본값: 1
  • SCALING_POLICY = { STANDARD | ECONOMY } — Auto-scale 모드로 실행되는 멀티 클러스터 웨어하우스에서 클러스터를 자동으로 시작·종료하는 정책을 지정해요. 기본값: STANDARD
  • AUTO_SUSPEND = { <num> | NULL } — 비활성 후 웨어하우스가 자동으로 일시 중지되는 시간(초)을 지정해요. 0 이상의 모든 정수 또는 NULL. 기본값: 600 (10분 비활성 후 자동 일시 중지).

    중요 쿼리 워크로드가 지속적으로 실행되는 웨어하우스를 요구하지 않는 한 AUTO_SUSPEND를 0 또는 NULL로 설정하는 것은 권장되지 않습니다. 이렇게 하면 특히 큰 웨어하우스에서 크레딧을 상당히 많이 소비(및 비용 발생)할 수 있어요.

  • AUTO_RESUME = { TRUE | FALSE } — SQL 문(예: 쿼리)이 제출될 때 웨어하우스를 자동으로 재개할지 지정해요. 기본값: TRUE
  • INITIALLY_SUSPENDED = { TRUE | FALSE } — 웨어하우스가 처음에 'Suspended' 상태로 생성되는지 지정해요. 기본값: FALSE
  • RESOURCE_MONITOR = <monitor_name> — 웨어하우스에 명시적으로 할당된 리소스 모니터의 이름을 지정해요. 리소스 모니터가 웨어하우스에 명시적으로 할당되면 그 모니터는 웨어하우스(및 모니터가 할당된 다른 모든 웨어하우스)가 사용하는 월간 크레딧을 제어해요. 값: 기존 리소스 모니터. 기본값: 값 없음(웨어하우스에 할당된 리소스 모니터 없음). 모든 리소스 모니터와 식별자를 보려면 SHOW RESOURCE MONITORS를 사용하세요.
  • COMMENT = '<string_literal>' — 웨어하우스에 대한 주석을 지정해요.
  • TAG ( ... ) — 태그 이름과 태그 문자열 값을 지정해요. 태그 값은 항상 문자열이며 최대 문자 수는 256이에요.

Query acceleration properties

Enterprise Edition 기능 — 이 기능은 Enterprise Edition 이상이 필요합니다.

  • ENABLE_QUERY_ACCELERATION = { TRUE | FALSE } — 이 웨어하우스의 컴퓨트 리소스에 의존하는 쿼리에 대해 쿼리 가속 서비스를 활성화할지 지정해요.
  • QUERY_ACCELERATION_MAX_SCALE_FACTOR = <num> — 쿼리 가속을 위해 컴퓨트 리소스를 임대하는 최대 배율(scale factor)을 지정해요. 배율은 웨어하우스 크기에 따른 승수로 사용됩니다. QUERY_ACCELERATION_MAX_SCALE_FACTOR를 0으로 설정하면 한도를 없애고 쿼리가 서비스를 처리하는 데 필요하고 사용 가능한 만큼 리소스를 임대할 수 있어요. 값 범위: 0 ~ 100. 기본값: 8 또는 Snowflake가 Gen2·멀티 클러스터 웨어하우스에 대해 생성 시 쿼리 가속을 자동으로 활성화하는 경우 2.

Optional parameters (objectParams)

  • MAX_CONCURRENCY_LEVEL = <num> — 웨어하우스 클러스터가 실행하는 SQL 문(즉 쿼리와 DML)에 대한 동시성 수준을 지정하는 객체 파라미터. 자세한 내용은 MAX_CONCURRENCY_LEVEL 문서를 참고하세요.
  • STATEMENT_QUEUED_TIMEOUT_IN_SECONDS = <num> — SQL 문(쿼리, DDL, DML 등)이 시스템에 의해 취소되기 전에 웨어하우스에서 대기열에 있을 수 있는 시간(초)을 지정하는 객체 파라미터. 자세한 내용은 STATEMENT_QUEUED_TIMEOUT_IN_SECONDS 문서를 참고하세요.
  • STATEMENT_TIMEOUT_IN_SECONDS = <num> — 실행 중인 SQL 문(쿼리, DDL, DML 등)이 시스템에 의해 취소된 후의 시간(초)을 지정하는 객체 파라미터. 자세한 내용은 STATEMENT_TIMEOUT_IN_SECONDS 문서를 참고하세요.

Access control requirements (접근 제어 요구 사항)

이 작업을 실행하는 데 사용되는 역할은 최소한 다음 권한을 보유해야 해요. 기존 웨어하우스에 대해 CREATE OR ALTER WAREHOUSE 문을 실행하려면 OWNERSHIP이 필요해요. OWNERSHIP은 객체에 대한 특별한 권한으로, 객체를 생성한 역할에 자동으로 부여되지만 소유 역할(또는 MANAGE GRANTS 권한이 있는 역할)이 GRANT OWNERSHIP 명령으로 다른 역할에 이전할 수 있습니다.

지정된 권한 집합으로 사용자 정의 역할을 만드는 방법은 Creating custom roles 문서를, 보안 객체에 대한 SQL 작업의 역할·권한 부여에 대한 일반적인 정보는 Overview of Access Control 문서를 참고하세요.

General usage notes (일반 사용 참고 사항)

웨어하우스 파라미터와 속성, 데이터 거버넌스에 대한 자세한 내용은 관련 문서를 참고하세요.

Billing and pricing

Snowpark 최적화 웨어하우스 크레딧 소비에 대한 내용은 Snowflake Service Consumption Table의 Table 1을 참고하세요.

Examples (예제)

Basic examples

X-Large 웨어하우스를 만들어 봅시다.

CREATE OR REPLACE WAREHOUSE my_wh WITH WAREHOUSE_SIZE = 'X-LARGE';

일시 중지된 상태로 Large 웨어하우스를 만들어 봅시다.

CREATE OR REPLACE WAREHOUSE my_wh WAREHOUSE_SIZE = LARGE INITIALLY_SUSPENDED = TRUE;

x86 Python이 필요한 Snowpark 워크로드를 위해 256 GB 메모리를 가진 so_warehouse라는 X-Large Snowpark 최적화 웨어하우스를 만들어 봅시다.

CREATE WAREHOUSE so_warehouse WITH
  WAREHOUSE_TYPE = 'SNOWPARK-OPTIMIZED'
  WAREHOUSE_SIZE = XLARGE
  RESOURCE_CONSTRAINT = 'MEMORY_16X_x86';

세대 2 표준 LARGE 웨어하우스를 만들어 봅시다.

CREATE WAREHOUSE gen2_wh WITH
  WAREHOUSE_SIZE = LARGE
  GENERATION = '2';

CREATE OR ALTER WAREHOUSE examples

간단한 웨어하우스를 만들어 봅시다. 다음 예제는 CREATE OR ALTER WAREHOUSE로 Snowpark 최적화 웨어하우스를 만든 다음 AUTO_RESUME 설정을 수정하는 방법을 보여줘요.

CREATE OR ALTER WAREHOUSE so_warehouse
  WAREHOUSE_TYPE = 'SNOWPARK-OPTIMIZED'
  WAREHOUSE_SIZE = 'X-LARGE'
  RESOURCE_CONSTRAINT = 'MEMORY_16X_x86'
  AUTO_RESUME = TRUE
  COMMENT = 'Snowpark warehouse for ingestion';

CREATE OR ALTER WAREHOUSE so_warehouse
  WAREHOUSE_TYPE = 'SNOWPARK-OPTIMIZED'
  WAREHOUSE_SIZE = 'X-LARGE'
  RESOURCE_CONSTRAINT = 'MEMORY_16X_x86'
  AUTO_RESUME = FALSE
  COMMENT = 'Snowpark warehouse for ingestion (disabled for auto-resume)';

Gen1 웨어하우스를 만들고 Gen2로 변경해 봅시다. 다음 예제는 GENERATION 파라미터로 CREATE OR ALTER WAREHOUSE가 어떻게 동작하는지 보여줘요. 먼저 세대 1 리소스로 웨어하우스를 만든 다음 세대 2 리소스를 사용하도록 변경합니다.

-- Create a new warehouse with GENERATION = '1'
CREATE OR ALTER WAREHOUSE test_gen_warehouse
  WITH WAREHOUSE_SIZE = XSMALL
    GENERATION = '1'
    AUTO_SUSPEND = 60
    INITIALLY_SUSPENDED = TRUE;

-- Verify that it was created
SHOW WAREHOUSES LIKE 'test_gen_warehouse'
  ->> SELECT "name", "resource_constraint" FROM $1;

-- Alter it to GENERATION = '2'
CREATE OR ALTER WAREHOUSE test_gen_warehouse
  WITH WAREHOUSE_SIZE = SMALL
    GENERATION = '2'
    AUTO_SUSPEND = 120;

-- Verify that it was altered
SHOW WAREHOUSES LIKE 'test_gen_warehouse'
  ->> SELECT "name", "resource_constraint" FROM $1;

-- Clean up when done
DROP WAREHOUSE test_gen_warehouse;

더 알아보기 (Learn more)