ALTER WAREHOUSE

暂停或恢复 虚拟仓库,或中止对仓库的所有查询(以及其他 SQL 语句)。还可用于为仓库重命名或设置/取消设置属性。

另请参阅:

CREATE WAREHOUSEDESCRIBE WAREHOUSEDROP WAREHOUSESHOW WAREHOUSES

语法

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> } [ , ... ]

ALTER WAREHOUSE [ IF EXISTS ] <name> ADD TABLES ( <table_name> [ , <table_name> ... ] )

ALTER WAREHOUSE [ IF EXISTS ] <name> DROP TABLES ( <table_name> [ , <table_name> ... ] )
Copy

其中:

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>
Copy
objectParams ::=
  MAX_CONCURRENCY_LEVEL = <num>
  STATEMENT_QUEUED_TIMEOUT_IN_SECONDS = <num>
  STATEMENT_TIMEOUT_IN_SECONDS = <num>
Copy

属性/参数

name

指定要更改的仓库的标识符。如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。

有关更多详细信息,请参阅 标识符要求

备注

仓库标识符可能是必需的,也可能是可选的,具体取决于以下因素:

  • 恢复/暂停仓库或中止对仓库的查询时,如果当前正在为会话使用仓库,则可以忽略标识符。

  • 重命名仓库或对仓库执行任何其他操作时,必须 指定标识符。

{ SUSPEND | RESUME [ IF SUSPENDED ] }

指定要对仓库执行的操作:

  • SUSPEND 从仓库中移除所有计算节点,并将该仓库置于“暂停”状态。

  • RESUME [ IF SUSPENDED ] 会预配计算资源,从而将暂停的仓库置于可用的“正在运行”状态。

    可选的 IF SUSPENDED 子句指定在恢复已在运行的仓库时,ALTER WAREHOUSE 命令是否成功完成:

    • 如果忽略,并且仓库已在运行,则该命令失败,并返回错误。

    • 如果指定,则无论仓库是否在运行,该命令都会成功完成。

ABORT ALL QUERIES

中止仓库上当前正在运行或排队的所有查询。

RENAME TO new_name

指定仓库的新标识符;对于您的账户必须唯一。

有关更多详细信息,请参阅 标识符要求

SET ...

Specifies one or more properties/parameters to set for the warehouse (separated by blank spaces, commas, or new lines).

备注

Only some properties apply to an interactive warehouse. For the list of properties that you can use, see CREATE INTERACTIVE WAREHOUSE.

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'

  • XXLARGEX2LARGE'2X-LARGE'

  • XXXLARGEX3LARGE'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_1

16 GB

Standard

XSMALL

X6LARGE

STANDARD_GEN_2

16 GB

标准(第 2 代)

XSMALL

X4LARGE

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

Standard

LARGE

X4LARGE

MEMORY_64X_x86

1 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 秒,可能不会产生预期的行为。

  • 设置 0NULL 值表示仓库永不暂停。

默认值:

``600``(仓库处于不活动状态 10 分钟后自动暂停)

重要

建议将 AUTO_SUSPEND 设置为 0NULL,除非查询工作负载需要持续运行的仓库。请注意,这可能会导致使用大量 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。

有关在语句中指定标签的信息,请参阅 Tag quotas

ENABLE_QUERY_ACCELERATION = { TRUE | FALSE }

指定是否为依赖此仓库获取计算资源的查询启用 Query Acceleration Service

有效值:
  • TRUE 启用查询加速

  • FALSE 禁用查询加速

默认值:

FALSE:查询加速已禁用

QUERY_ACCELERATION_MAX_SCALE_FACTOR = num

指定租用计算资源以加速查询的最大扩展系数。 扩展系数用作基于 仓库大小 的乘数。

将 QUERY_ACCELERATION_MAX_SCALE_FACTOR 设置为 0 可以消除限制,并允许查询根据需要租用尽可能多的资源来为查询提供服务。

无论 QUERY_ACCELERATION_MAX_SCALE_FACTOR 值如何,用于加速查询的可用计算资源量都受服务中可用的资源和其他并发请求的数量的约束。有关更多详细信息,请参阅 调整比例因子

有效值:

0100

默认值:

8

UNSET ...

指定要为数据库取消设置的一个(或多个)属性和/或参数,这会将它们重置为默认值:

  • property_name

  • param_name

    • TAG tag_name [ , tag_name ... ]

您可以使用单个 ALTER 语句重置多个属性/参数;但是,每个属性/参数 必须 用逗号分隔。此外,在重置属性/参数时,仅指定名称;无需指定任何值。

备注

UNSET 可用于取消设置仓库的所有属性和参数,但 WAREHOUSE_SIZE 除外,后者只能使用 SET 更改。

ADD TABLES ( table_name[, ...] )

Associates one or more interactive tables with an interactive warehouse. This action initiates the cache-warming process for the specified tables.

备注

  • This clause only applies to interactive warehouses created with the INTERACTIVE keyword.

  • If an interactive table is already associated with the warehouse, the command succeeds but has no effect.

  • An interactive table can be associated with multiple interactive warehouses.

  • Cache warming may take significant time depending on the size of the data.

table_name

Specifies the identifier for an interactive table to associate with the warehouse. You can specify multiple table names separated by commas.

DROP TABLES ( table_name[, ...] )

Removes the association between one or more interactive tables and an interactive warehouse. This action stops using the cache for the specified tables, but does not drop the tables themselves.

备注

  • This clause only applies to interactive warehouses created with the INTERACTIVE keyword.

  • The interactive tables continue to exist after this operation. This clause does not perform a DROP TABLE operation.

table_name

Specifies the identifier for an interactive table to disassociate from the warehouse. You can specify multiple table names separated by commas.

访问控制要求

用于执行此 SQL 命令的 角色 必须至少具有以下 一项 权限

权限

对象

备注

APPLY

标签

允许在仓库上设置标签。

MODIFY

仓库

允许更改仓库的任何属性,包括更改其大小。需要将仓库分配给资源监视器。只有 ACCOUNTADMIN 角色可以将仓库分配给资源监视器。

MONITOR

仓库

允许查看在仓库上执行的当前和过去的查询以及该仓库的使用统计信息。

OPERATE

仓库

允许更改仓库的状态(停止、启动、暂停、恢复),允许查看在仓库上执行的当前和过去查询,并中止任何正在执行的查询。

USAGE

仓库

允许使用虚拟仓库,从而在仓库上执行查询。如果在仓库配置为自动恢复时向其提交 SQL 语句(例如,查询),则仓库会自动恢复并执行该语句。

小技巧

授予全局 MANAGE WAREHOUSES 权限相当于授予账户中所有仓库的 MODIFY、MONITOR 和 OPERATE 权限。您可以将此权限授予其目的包括管理仓库的角色,以简化 Snowflake 访问控制管理。

有关详细信息,请参阅 委派仓库管理

有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色

有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述

使用说明

  • 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 子句要求正在使用的角色或活动角色层次结构中的角色具有仓库的适当 仓库权限

  • The ADD TABLES and DROP TABLES clauses only apply to interactive warehouses created with the INTERACTIVE keyword. These clauses are not available for standard or Snowpark-optimized warehouses.

Billing and pricing

For information on Snowpark-optimized warehouse credit consumption, see Table 1 in the Snowflake Service Consumption Table.

For information about billing and pricing considerations for interactive warehouses, see 成本和计费注意事项.

小技巧

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;
Copy

恢复名为 my_wh 的仓库,然后在仓库运行的过程中更改仓库的大小:

ALTER WAREHOUSE my_wh RESUME;

ALTER WAREHOUSE my_wh SET warehouse_size=MEDIUM;
Copy

修改内存资源为 256 GB,并将 CPU 架构设置为 x86,用于 Snowpark-Optimized Warehouses so_warehouse

ALTER WAREHOUSE so_warehouse SET
  RESOURCE_CONSTRAINT = 'MEMORY_16X_x86';
Copy

Associate interactive tables with an interactive warehouse:

ALTER WAREHOUSE interactive_demo ADD TABLES (orders, customers);
Copy

Remove interactive tables from an interactive warehouse:

ALTER WAREHOUSE interactive_demo DROP TABLES (orders, customers);
Copy
语言: 中文