CREATE WAREHOUSE¶
在系统中创建新的 虚拟仓库。
初始创建虚拟仓库可能需要一些时间来配置计算资源,除非仓库在创建之初处于 SUSPENDED
状态。
语法¶
CREATE [ OR REPLACE ] WAREHOUSE [ IF NOT EXISTS ] <name>
[ [ WITH ] objectProperties ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ objectParams ]
其中:
objectProperties ::= WAREHOUSE_TYPE = { STANDARD | 'SNOWPARK-OPTIMIZED' } WAREHOUSE_SIZE = { XSMALL | SMALL | MEDIUM | LARGE | XLARGE | XXLARGE | XXXLARGE | X4LARGE | X5LARGE | X6LARGE } 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>
必填参数¶
name
虚拟仓库的标识符;对于您的账户必须是唯一的。
此外,标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如,
"My object"
)。放在双引号内的标识符也区分大小写。有关更多详细信息,请参阅 标识符要求。
可选属性 (objectProperties
)¶
WAREHOUSE_TYPE = { STANDARD | 'SNOWPARK-OPTIMIZED' }
指定仓库类型。
- 有效值:
STANDARD
、'STANDARD'
'SNOWPARK-OPTIMIZED'
- 默认值:
STANDARD
备注
要使用包含连字符的值 (
'SNOWPARK-OPTIMIZED'
),则必须将值放在单引号内,如下所示。WAREHOUSE_SIZE = { XSMALL | SMALL | MEDIUM | LARGE | XLARGE | XXLARGE | XXXLARGE | X4LARGE | X5LARGE | X6LARGE }
指定虚拟仓库的大小。大小决定了仓库中每个集群的计算资源量,因此也决定了仓库运行时消耗的 Credit。
- 有效值:
支持 值
同义词
XSMALL
'X-SMALL'
SMALL
MEDIUM
LARGE
XLARGE
'X-LARGE'
XXLARGE
X2LARGE
、'2X-LARGE'
XXXLARGE
X3LARGE
、'3X-LARGE'
X4LARGE
'4X-LARGE'
X5LARGE
'5X-LARGE'
X6LARGE
'6X-LARGE'
- 默认值:
XSMALL
备注
XSMALL、SMALL、X5LARGE 和 X6LARGE 大小不支持 Snowpark-Optimized Warehouses。Snowpark-Optimized Warehouses 的默认大小为 MEDIUM。
要使用包含连字符的值(例如
'2X-LARGE'
),则必须将值放在单引号内,如下所示。
MAX_CLUSTER_COUNT = num
指定多集群仓库的最大集群数。对于单集群仓库,此值始终为
1
。- 有效值:
1
至10
请注意,指定大于
1
的值,表示仓库是多集群仓库;但是,只有在 Snowflake Enterprise Edition (或更高)中设置更高值。有关更多信息,请参阅 多集群仓库。
- 默认值:
1
(单集群仓库)
小技巧
对于 Snowflake Enterprise Edition(或更高版本),我们建议始终将值设置为大于
1
,以帮助维护多集群仓库的高可用性和最佳性能。这也有助于确保在集群发生故障时(虽然较为少见)保持连续性。MIN_CLUSTER_COUNT = num
指定多集群仓库的最小集群数(仅适用于多集群仓库)。
- 有效值:
1
至10
但请注意,
MIN_CLUSTER_COUNT
必须等于或小于MAX_CLUSTER_COUNT
:如果两个参数相等,则仓库以 最大化 模式运行。
如果
MIN_CLUSTER_COUNT
小于MAX_CLUSTER_COUNT
,则仓库在 自动扩展 模式下运行。
有关更多信息,请参阅 多集群仓库。
- 默认值:
1
SCALING_POLICY = { STANDARD | ECONOMY }
指定在自动扩展模式下运行的多集群仓库中自动启动和关闭集群的策略。
- 有效值:
STANDARD
:通过启动集群来最大限度地减少排队。ECONOMY
:通过支持持续满载运行的集群来节省 Credit。
有关更详细的描述,请参阅 为多集群仓库设置扩展策略。
- 默认值:
STANDARD
AUTO_SUSPEND = { num | NULL }
指定仓库在处于不活动状态多少秒之后自动暂停。
- 有效值:
0
或更大的任意整数,或者NULL
:暂停仓库的后台进程大约每 30 秒运行一次,因此,此属性的设置不是为了启用对仓库暂停的精确控制。
虽然允许设置小于 30 的值或不是 30 的倍数的值,但由于仓库暂停的轮询间隔为 30 秒,可能不会产生预期的行为。
设置
0
或NULL
值表示仓库永不暂停。
- 默认值:
``600``(仓库处于不活动状态 10 分钟后自动暂停)
重要
不 建议将
AUTO_SUSPEND
设置为0
或NULL
,除非查询工作负载需要持续运行的仓库。请注意,这可能会导致使用大量 Credit(并相应地产生高额的费用),尤其是对于较大的仓库。AUTO_RESUME = { TRUE | FALSE }
指定在向仓库提交 SQL 语句(例如,查询)时,是否自动恢复仓库。
- 有效值:
TRUE
:在提交新查询时,仓库将恢复。FALSE
:仅当使用 ALTER WAREHOUSE 或通过 Snowflake Web 界面显式恢复时,仓库才会恢复。
- 默认值:
TRUE
(向仓库提交 SQL 语句时,仓库会自动恢复)
INITIALLY_SUSPENDED = { TRUE | FALSE }
指定仓库最初创建时是否处于“暂停”状态。
- 有效值:
TRUE
:仓库已创建,但已暂停。FALSE
:仓库在创建完成后就开始运行。
- 默认值:
FALSE
RESOURCE_MONITOR = monitor_name
指定明确分配给仓库的资源监视器的名称。显式将资源监视器分配给仓库时,监视器将控制仓库(以及该监视器分配到的所有其他仓库)使用的每月 Credit。
- 有效值:
任何现有资源监视器。
有关更多详细信息,请参阅 使用资源监视器。
- 默认值:
无值(未为仓库分配任何资源监视器)
小技巧
要查看所有资源监视器及其标识符,请使用 SHOW RESOURCE MONITORS 命令。
COMMENT = 'string_literal'
指定仓库的注释。
TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )
指定 标签 名称和标签字符串值。
标签值始终为字符串,标签值的最大字符数为 256。
有关在语句中指定标签的信息,请参阅 对象和列的标签配额。
查询加速属性¶
ENABLE_QUERY_ACCELERATION = { TRUE | FALSE }
指定是否为依赖此仓库获取计算资源的查询启用 Query Acceleration Service。
- 有效值:
TRUE
启用查询加速FALSE
禁用查询加速
- 默认值:
FALSE
:查询加速已禁用
可选参数 (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。
访问控制要求¶
权限 |
对象 |
备注 |
---|---|---|
CREATE WAREHOUSE |
账户 |
Only the SYSADMIN role, or a higher role, has this privilege by default. The privilege can be granted to additional roles as needed. |
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
创建虚拟仓库会自动将其设置为当前会话使用的仓库(相当于使用仓库的 USE WAREHOUSE 命令)。
要更改当前会话使用的仓库,请在 CREATE WAREHOUSE 语句后执行显式 USE WAREHOUSE 语句。例如,创建仓库
my_wh
,但继续使用当前仓库,而不是my_wh
,以此来执行其他语句:SET current_wh_name = (SELECT CURRENT_WAREHOUSE()); CREATE OR REPLACE WAREHOUSE my_wh WAREHOUSE_SIZE = 'XSMALL'; USE WAREHOUSE IDENTIFIER($current_wh_name);
关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
使用
OR REPLACE
相当于对现有仓库执行 DROP WAREHOUSE,然后创建一个同名的新仓库。CREATE OR REPLACE <object> 语句是原子的。也就是说,当对象被替换时,旧对象将被删除,新对象将在单个事务中创建。
对删除的仓库运行的所有查询都将被中止。
与标准仓库相比,Snowpark 优化型虚拟仓库的初始创建和恢复可能需要更长的时间。
Snowpark-Optimized Warehouses 不支持
XSMALL
、SMALL
、X5LARGE
或X6LARGE
仓库大小。
示例¶
创建一个 X 大仓库:
CREATE OR REPLACE WAREHOUSE my_wh WITH WAREHOUSE_SIZE='X-LARGE';
创建一个处于暂停状态的大仓库:
CREATE OR REPLACE WAREHOUSE my_wh WAREHOUSE_SIZE=LARGE INITIALLY_SUSPENDED=TRUE;