ALTER WAREHOUSE¶
暂停或恢复 虚拟仓库,或中止对仓库的所有查询(以及其他 SQL 语句)。还可用于为仓库重命名或设置/取消设置属性。
语法¶
ALTER WAREHOUSE [ IF EXISTS ] [ <name> ] { SUSPEND | RESUME [ IF SUSPENDED ] }
ALTER WAREHOUSE [ IF EXISTS ] [ <name> ] ABORT ALL QUERIES
ALTER WAREHOUSE [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER WAREHOUSE [ IF EXISTS ] <name> SET [ objectProperties ]
                                         [ objectParams ]
ALTER WAREHOUSE [ IF EXISTS ] <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER WAREHOUSE [ IF EXISTS ] <name> UNSET TAG <tag_name> [ , <tag_name> ... ]
ALTER WAREHOUSE [ IF EXISTS ] <name> UNSET { <property_name> | <param_name> } [ , ... ]
其中:
objectProperties ::= WAREHOUSE_TYPE = { STANDARD | 'SNOWPARK-OPTIMIZED' } WAREHOUSE_SIZE = { XSMALL | SMALL | MEDIUM | LARGE | XLARGE | XXLARGE | XXXLARGE | X4LARGE | X5LARGE | X6LARGE } RESOURCE_CONSTRAINT = { STANDARD_GEN_1 | STANDARD_GEN_2 | MEMORY_1X | MEMORY_1X_x86 | MEMORY_16X | MEMORY_16X_x86 | MEMORY_64X | MEMORY_64X_x86 } WAIT_FOR_COMPLETION = { TRUE | FALSE } MAX_CLUSTER_COUNT = <num> MIN_CLUSTER_COUNT = <num> SCALING_POLICY = { STANDARD | ECONOMY } AUTO_SUSPEND = { <num> | NULL } AUTO_RESUME = { 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
- 指定要更改的仓库的标识符。如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。 - 有关更多详细信息,请参阅 标识符要求。 - 备注 - 仓库标识符可能是必需的,也可能是可选的,具体取决于以下因素: - 恢复/暂停仓库或中止对仓库的查询时,如果当前正在为会话使用仓库,则可以忽略标识符。 
- 重命名仓库或对仓库执行任何其他操作时,必须 指定标识符。 
 
- { SUSPEND | RESUME [ IF SUSPENDED ] }
- 指定要对仓库执行的操作: - SUSPEND从仓库中移除所有计算节点,并将该仓库置于“暂停”状态。
- RESUME [ IF SUSPENDED ]会预配计算资源,从而将暂停的仓库置于可用的“正在运行”状态。- 可选的 - IF SUSPENDED子句指定在恢复已在运行的仓库时,ALTER WAREHOUSE 命令是否成功完成:- 如果忽略,并且仓库已在运行,则该命令失败,并返回错误。 
- 如果指定,则无论仓库是否在运行,该命令都会成功完成。 
 
 
- ABORT ALL QUERIES
- 中止仓库上当前正在运行或排队的所有查询。 
- RENAME TO new_name
- 指定仓库的新标识符;对于您的账户必须唯一。 - 有关更多详细信息,请参阅 标识符要求。 
- SET ...
- 指定要为仓库设置的一个或多个属性/参数(用空格、逗号或新行分隔): - WAREHOUSE_TYPE = { STANDARD | 'SNOWPARK-OPTIMIZED' }
- 指定仓库类型。 - 有效值:
- STANDARD、- 'STANDARD'
- 'SNOWPARK-OPTIMIZED'
 
- 默认值:
- STANDARD
 - 备注 - 要使用包含连字符的值 ( - 'SNOWPARK-OPTIMIZED'),则必须将值放在单引号内,如下所示。
 
 - WAREHOUSE_SIZE = string_constant
- 指定虚拟仓库的大小。大小决定了每个集群中的计算资源量,因此决定了仓库在运行的时候使用的 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
 - 备注 - Snowpark-Optimized Warehouses 的默认大小为 MEDIUM。 
- 对于 Snowpark-Optimized Warehouses,仅在 MEMORY_16X 资源约束下支持 X5LARGE 和 X6LARGE 大小。 
- 对于使用 STANDARD_GEN_2 资源约束条件的标准仓库,不支持 X5LARGE 和 X6LARGE 大小。 
- 要使用包含连字符的值(例如 - '2X-LARGE'),则必须将值放在单引号内,如下所示。
- 若要阻止 ALTER WAREHOUSE 命令立即返回,使其等到大小调整完成再返回,请添加 WAIT_FOR_COMPLETION 参数。 
- MAX_CLUSTER_COUNT 属性的上限取决于仓库的大小。当您将 WAREHOUSE_SIZE 更改为高于 - MEDIUM的值时,可能需要同时降低 MAX_CLUSTER_COUNT。有关每种仓库大小的 MAX_CLUSTER_COUNT 上限,请参阅 多集群仓库的集群数上限。
- 较大的仓库规模(5X-大 和 6X-大)在所有 Amazon Web Services (AWS) 区域和 Microsoft Azure 区域正式发布。 
 
 - RESOURCE_CONSTRAINT = { STANDARD_GEN_1 | STANDARD_GEN_2 | MEMORY_1X| MEMORY_1X_x86 | MEMORY_16X | MEMORY_16X_x86 | MEMORY_64X | MEMORY_64X_x86 }
- 
为 Snowpark-Optimized Warehouses 指定内存和 CPU 架构,或为 标准仓库指定第 1 代或第 2 代功能。 下表包括属性、可用内存、CPU 架构和 resource_constraint设置所需的最小仓库规模的有效值。有关提供第 2 代标准仓库的地区和云服务提供商的更多信息,请参阅 Snowflake 第 2 代标准仓库。- 有效值:
 值 内存(最多) CPU 架构 所需的最小仓库规模 最大仓库规模 STANDARD_GEN_116 GB Standard XSMALL X6LARGE STANDARD_GEN_216 GB 标准(第 2 代) XSMALL X4LARGE MEMORY_1X16 GB Standard XSMALL X4LARGE MEMORY_1X_x8616 GB X86 XSMALL X4LARGE MEMORY_16X256 GB Standard MEDIUM X6LARGE MEMORY_16X_x86256 GB X86 MEDIUM X4LARGE MEMORY_64X1 TB Standard LARGE X4LARGE MEMORY_64X_x861 TB X86 LARGE X4LARGE - 默认值:
- MEMORY_16X:Snowpark-Optimized Warehouses。对于标准仓库,默认值取决于您的云服务提供商区域的第 2 代支持,以及您的组织是否是在该地区提供第 2 代支持之后创建的。有关更多信息,请参阅 标准仓库 RESOURCE_CONSTRAINT 的默认值。
 
 - WAIT_FOR_COMPLETION = { TRUE | FALSE }
- 调整仓库大小时,可以使用此参数阻止 ALTER WAREHOUSE 命令返回,使其等到大小调整完所有计算资源的预配后再返回。如将仓库调整到较大的大小,阻止返回命令可让您了解,计算资源已完全预配完毕,并且仓库已准备好使用所有新资源执行查询。 - 有效值:
- TRUE:ALTER WAREHOUSE 命令将阻塞,直至仓库大小调整完成。
- FALSE:在仓库大小调整完成之前,ALTER WAREHOUSE 会立即返回。
 
- 默认值:
- FALSE 
 - 备注 - 该参数的值不会持久保留,如果您希望在此命令返回之前完成仓库大小调整,则必须在每次执行时将此参数设置为 TRUE。 
- 如果设置为 - TRUE,并且您中止了 ALTER WAREHOUSE 命令,则仅中止等待,仓库大小调整将继续执行至完成。若要将仓库调整回其原始大小,需要执行另一个 ALTER WAREHOUSE 命令。
- 此参数必须与 WAREHOUSE_SIZE 参数配合使用,否则将引发异常。 
 
 - MAX_CLUSTER_COUNT = num
- 指定多集群仓库的最大集群数。对于单集群仓库,此值始终为 - 1。- 有效值:
- 1到上限,具体因仓库大小而异。- 请注意,指定大于 - 1的值,表示仓库是多集群仓库;但是,只有在 Snowflake Enterprise Edition (或更高)中设置更高值。- MAX_CLUSTER_COUNT 属性的上限取决于仓库的大小。当您将 WAREHOUSE_SIZE 更改为高于 MEDIUM 的值时,可能需要同时降低 MAX_CLUSTER_COUNT。有关每种仓库大小的 MAX_CLUSTER_COUNT 上限,请参阅 多集群仓库的集群数上限。 
 - 有关多集群仓库的更多信息,请参阅 多集群仓库。 
- 默认值:
- 1(单集群仓库)
 - 小技巧 - 对于 Snowflake Enterprise Edition(或更高版本),我们建议始终将此值设置为大于 - 1的值,以帮助维护(多集群)仓库的高可用性和最佳性能。这也有助于确保在集群发生故障时(虽然较为少见)保持连续性。
 - MIN_CLUSTER_COUNT = num
- 为多集群仓库指定最小集群数。 - 有效值:
- 1是 MAX_CLUSTER_COUNT 的值。MAX_CLUSTER_COUNT 的上限因仓库大小而异。- MIN_CLUSTER_COUNT 必须等于或小于 MAX_CLUSTER_COUNT: - 如果两个参数相等,则仓库以 最大化 模式运行。 
- 如果 MIN_CLUSTER_COUNT 小于 MAX_CLUSTER_COUNT,则仓库在 自动扩展 模式下运行。 
 - 有关更多信息,包括每个仓库大小的上限,请参阅 多集群仓库。 
- 默认值:
- 1
 
 - SCALING_POLICY = { STANDARD | ECONOMY }
- 对象参数,用于指定在自动扩展模式下运行的多集群仓库中自动启动和关闭集群的策略。 - 有关此参数的详细说明,请参阅 为多集群仓库设置扩展策略。 
 - AUTO_SUSPEND = { num | NULL }
- 指定仓库在处于不活动状态多少秒之后自动暂停。 - 有效值:
- 0或更大的任意整数,或者- NULL:- 暂停仓库的后台进程大约每 30 秒运行一次,因此,此属性的设置不是为了启用对仓库暂停的精确控制。 
- 虽然允许设置小于 30 的值或不是 30 的倍数的值,但由于仓库暂停的轮询间隔为 30 秒,可能不会产生预期的行为。 
- 设置 - 0或- NULL值表示仓库永不暂停。
 
- 默认值:
- ``600``(仓库处于不活动状态 10 分钟后自动暂停) 
 - 重要 - 不 建议将 - AUTO_SUSPEND设置为- 0或- NULL,除非查询工作负载需要持续运行的仓库。请注意,这可能会导致使用大量 Credit(并相应地产生高额的费用),尤其是对于较大的仓库。- 有关更多详细信息,请参阅 仓库注意事项。 
 - AUTO_RESUME = { TRUE | FALSE }
- 指定在向仓库提交 SQL 语句(例如,查询)时,是否自动恢复仓库。如果为 - FALSE,则仅当使用 ALTER WAREHOUSE 或通过 Snowflake Web 界面显式恢复时,仓库才会再次启动。- 有效值:
- TRUE:在提交新查询时,仓库将恢复。
- FALSE:仅当使用 ALTER WAREHOUSE 或通过 Snowflake Web 界面显式恢复时,仓库才会恢复。
 
- 默认值:
- TRUE(向仓库提交 SQL 语句时,仓库会自动恢复)
 
 - INITIALLY_SUSPENDED = { TRUE | FALSE }
- 在更改仓库时不适用 
 - RESOURCE_MONITOR = monitor_name
- 指定显式分配给仓库的资源监视器的标识符。显式将资源监视器分配给仓库时,监视器将控制仓库(以及该监视器分配到的所有其他仓库)使用的每月 Credit。 - 有效值:
- 任何现有资源监视器。 - 有关更多详细信息,请参阅 使用资源监视器。 
- 默认值:
- 无值(未为仓库分配任何资源监视器) 
 - 小技巧 - 要查看所有资源监视器及其标识符,请使用 SHOW RESOURCE MONITORS 命令。 
 - COMMENT = 'string_literal'
- 添加注释或覆盖仓库的现有注释。 
 - MAX_CONCURRENCY_LEVEL = num
- 对象参数,用于指定仓库集群执行的 SQL 语句(即查询和 DML)的并发级别。在达到该级别时: - 对于单集群仓库或多集群仓库(在最大化模式下),其他语句将排队,直至有资源可用。 
- 对于多集群仓库(在自动扩展模式下),将启动其他集群。 
 - 此参数可以与 - STATEMENT_QUEUED_TIMEOUT_IN_SECONDS结合使用,以确保仓库永远不会积压。- 有关此参数的详细说明,请参阅 MAX_CONCURRENCY_LEVEL。 
 - STATEMENT_QUEUED_TIMEOUT_IN_SECONDS = num
- 对象参数,该参数指定在系统取消 SQL 语句(查询、DDL、DML 等)之前,语句可在仓库中排队的时间量(以秒为单位)。 - 此参数可以与 - MAX_CONCURRENCY_LEVEL结合使用,以确保仓库永远不会积压。- 有关此参数的详细说明,请参阅 STATEMENT_QUEUED_TIMEOUT_IN_SECONDS。 
 - STATEMENT_TIMEOUT_IN_SECONDS = num
- 对象参数,指定系统在多久(以秒为单位)后取消运行中的 SQL 语句(查询、DDL、DML 等)。 - 有关此参数的详细说明,请参阅 STATEMENT_TIMEOUT_IN_SECONDS。 
 - TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]
- 指定 标签 名称和标签字符串值。 - 标签值始终为字符串,标签值的最大字符数为 256。 - 有关在语句中指定标签的信息,请参阅 对象的标签配额。 
 - ENABLE_QUERY_ACCELERATION = { TRUE | FALSE }
- 指定是否为依赖此仓库获取计算资源的查询启用 Query Acceleration Service。 - 有效值:
- TRUE启用查询加速
- FALSE禁用查询加速
 
- 默认值:
- FALSE:查询加速已禁用
 
 
- UNSET ...
- 指定要为数据库取消设置的一个(或多个)属性和/或参数,这会将它们重置为默认值: - property_name
- param_name- TAG tag_name [ , tag_name ... ]
 
 - 您可以使用单个 ALTER 语句重置多个属性/参数;但是,每个属性/参数 必须 用逗号分隔。此外,在重置属性/参数时,仅指定名称;无需指定任何值。 - 备注 - UNSET可用于取消设置仓库的所有属性和参数,但- WAREHOUSE_SIZE除外,后者只能使用- SET更改。
访问控制要求¶
用于执行此 SQL 命令的 角色 必须至少具有以下 一项 权限:
| 权限 | 对象 | 备注 | 
|---|---|---|
| APPLY | 标签 | 允许在仓库上设置标签。 | 
| MODIFY | 仓库 | 允许更改仓库的任何属性,包括更改其大小。需要将仓库分配给资源监视器。只有 ACCOUNTADMIN 角色可以将仓库分配给资源监视器。 | 
| MONITOR | 仓库 | 允许查看在仓库上执行的当前和过去的查询以及该仓库的使用统计信息。 | 
| OPERATE | 仓库 | 允许更改仓库的状态(停止、启动、暂停、恢复),允许查看在仓库上执行的当前和过去查询,并中止任何正在执行的查询。 | 
| USAGE | 仓库 | 允许使用虚拟仓库,从而在仓库上执行查询。如果在仓库配置为自动恢复时向其提交 SQL 语句(例如,查询),则仓库会自动恢复并执行该语句。 | 
小技巧
授予全局 MANAGE WAREHOUSES 权限相当于授予账户中所有仓库的 MODIFY、MONITOR 和 OPERATE 权限。您可以将此权限授予其目的包括管理仓库的角色,以简化 Snowflake 访问控制管理。
有关详细信息,请参阅 委派仓库管理。
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
- A warehouse does not need to be suspended to set or change any of its properties. You can change the warehouse type and resource constraint properties while the warehouse is running. 
- 在更改仓库大小时,更改不会影响到当前正在执行的任何语句(包括查询)。在语句完成、计算资源完全预配之后,所有后续语句都会使用新的大小。 
- 暂停仓库 不会 中止仓库在暂停时正在处理的任何查询。相反,仓库会完成此类查询,然后关停用于处理查询的计算资源。在此期间,仓库处于 静默 模式。在所有计算资源均关停时,仓库的状态将变为暂停。 
- 关于元数据: - 注意 - 客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。 
- 恢复 Snowpark 优化型虚拟仓库所需时间可能比标准仓库更长。 
- Snowpark-Optimized Warehouses 不支持 查询加速。 
- 指定 - IF EXISTS子句要求正在使用的角色或活动角色层次结构中的角色具有仓库的适当 仓库权限。
计费和定价¶
For information on Snowpark-optimized warehouse credit consumption, see
Table 1 in the Snowflake Service Consumption Table.
小技巧
For information about cost implications of changing the RESOURCE_CONSTRAINT property, see considerations for changing RESOURCE_CONSTRAINT while a warehouse is running or suspended.
示例¶
将仓库 wh1 重命名为 wh2:
ALTER WAREHOUSE IF EXISTS wh1 RENAME TO wh2;
恢复名为 my_wh 的仓库,然后在仓库运行的过程中更改仓库的大小:
ALTER WAREHOUSE my_wh RESUME;
ALTER WAREHOUSE my_wh SET warehouse_size=MEDIUM;
修改内存资源为 256 GB,并将 CPU 架构设置为 x86,用于 Snowpark-Optimized Warehouses so_warehouse:
ALTER WAREHOUSE so_warehouse SET
  RESOURCE_CONSTRAINT = 'MEMORY_16X_x86';
