CREATE WAREHOUSE¶
在系统中创建新的 虚拟仓库。
初始创建虚拟仓库可能需要一些时间来配置计算资源,除非仓库在创建之初处于 SUSPENDED
状态。
该命令支持以下变体:
CREATE OR ALTER WAREHOUSE:创建新仓库(如果不存在)或更改现有仓库。
语法¶
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 } RESOURCE_CONSTRAINT = { 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>
变体语法¶
CREATE OR ALTER WAREHOUSE¶
创建新仓库(如果尚不存在),或者将现有仓库转换为语句中定义的仓库。CREATE OR ALTER WAREHOUSE 语句遵循 CREATE WAREHOUSE 语句的语法规则,并具有与 ALTER WAREHOUSE 语句相同的限制。
更改仓库时支持以下修改:
更改仓库属性和参数。例如,WAREHOUSE_TYPE、AUTO_RESUME 或 MAX_CLUSTER_COUNT。
有关更多信息,请参阅 CREATE OR ALTER WAREHOUSE 使用说明。
CREATE OR ALTER WAREHOUSE <name>
[ [ WITH ] objectProperties ]
[ 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
备注
X5LARGE 和 X6LARGE 大小不支持 Snowpark-Optimized Warehouses。Snowpark-Optimized Warehouses 的默认大小为 MEDIUM。
要使用包含连字符的值(例如
'2X-LARGE'
),则必须将值放在单引号内,如下所示。较大的仓库规模(5X-大 和 6X-大)在所有 Amazon Web Services (AWS) 区域和 Microsoft Azure 区域正式发布。
RESOURCE_CONSTRAINT = { MEMORY_1X| MEMORY_1X_x86 | MEMORY_16X | MEMORY_16X_x86 | MEMORY_64X | MEMORY_64X_x86 }
指定 Snowpark-Optimized Warehouses 的内存和 CPU 架构。下表包括属性、可用内存、CPU 架构和
resource_constraint
设置所需的最小仓库规模的有效值:- 有效值:
值
内存(最多)
CPU 架构
所需的最小仓库规模
最大仓库规模
MEMORY_1X
16 GB
Standard
XSMALL
X4LARGE
MEMORY_1X_x86
16 GB
X86
XSMALL
X4LARGE
MEMORY_16X
256 GB
Standard
MEDIUM
X6LARGE
MEMORY_16X_x86
256 GB
X86
MEDIUM
X4LARGE
MEMORY_64X
1 TB [1]
Standard
LARGE
X4LARGE
MEMORY_64X_x86
1 TB [1]
X86
LARGE
X4LARGE
- 默认值:
MEMORY_16X
仅当
WAREHOUSE_TYPE
为'SNOWPARK-OPTIMIZED'
时才能设置此属性。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。
有关在语句中指定标签的信息,请参阅 对象和列的标签配额。
查询加速属性¶
此功能需要 Enterprise Edition(或更高版本)。如需咨询升级事宜,请联系 Snowflake 支持部门。
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. |
OWNERSHIP |
仓库 |
为 现有 仓库执行 CREATE OR ALTER WAREHOUSE 语句时需要。 OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
一般使用说明¶
创建虚拟仓库会自动将其设置为当前会话使用的仓库(相当于使用仓库的 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
仓库大小。
CREATE OR ALTER WAREHOUSE 使用说明¶
此功能在中华人民共和国不可用。
适用于所有账户。
限制
ALTER WAREHOUSE 命令的所有限制均适用。
INITIALLY_SUSPENDED 属性不能更改(SET 或 UNSET)。
仓库参数和属性
如果修改后的仓库定义中缺少以前设置的属性或参数,则会取消设置此属性或参数。
取消设置显式参数值会将其设置为默认参数值。
数据治理
不 支持 使用 CREATE OR ALTER WAREHOUSE 语句对仓库设置或取消设置标签或策略。
现有策略或标签不能由 CREATE OR ALTER WAREHOUSE 语句更改,它们会保持不变。
计费和定价¶
下表显示了对 Snowpark-Optimized Warehouses 每小时收取的 Snowflake Credit。
每小时 Credit |
||||||||||
---|---|---|---|---|---|---|---|---|---|---|
资源约束 |
XS |
S |
M |
L |
XL |
2XL |
3XL |
4XL |
5XL |
6XL |
MEMORY_1X |
1.00 |
2.00 |
4.00 |
8.00 |
16.00 |
32.00 |
64.00 |
128.00 |
||
MEMORY_1X_X86 |
1.10 |
2.20 |
4.40 |
8.80 |
17.60 |
35.20 |
70.40 |
140.80 |
||
MEMORY_16X |
6.00 |
12.00 |
24.00 |
48.00 |
96.00 |
192.00 |
384.00 |
768.00 |
||
MEMORY_16X_X86 |
6.25 |
12.50 |
25.00 |
50.00 |
100.00 |
200.00 |
||||
MEMORY_64X |
15.00 |
30.00 |
60.00 |
120.00 |
240.00 |
|||||
MEMORY_64X_x86 |
16.00 |
32.00 |
64.00 |
128.00 |
256.00 |
示例¶
基本示例¶
创建一个 X 大仓库:
CREATE OR REPLACE WAREHOUSE my_wh WITH WAREHOUSE_SIZE='X-LARGE';
创建一个处于暂停状态的大仓库:
CREATE OR REPLACE WAREHOUSE my_wh WAREHOUSE_SIZE=LARGE INITIALLY_SUSPENDED=TRUE;
为需要 x86 Python 的 Snowpark 工作负载创建一个名为 so_warehouse
、内存为 256 GB 的 X-大 Snowpark 优化型仓库:
CREATE WAREHOUSE so_warehouse WITH
WAREHOUSE_TYPE = 'SNOWPARK-OPTIMIZED'
WAREHOUSE_SIZE = xlarge
RESOURCE_CONSTRAINT = 'MEMORY_16X_x86';
CREATE OR ALTER WAREHOUSE 示例¶
创建一个简单的仓库¶
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)';