使用仓库¶
所有仓库任务都可通过 Snowflake Web 界面或使用仓库 DDL 命令执行。
本主题内容:
创建仓库¶
可以通过 Web 界面或使用 SQL 创建仓库:
- Snowsight:
选择 Admin » Warehouses » Warehouse。
- Classic Console:
- SQL:
执行 CREATE WAREHOUSE 命令。
创建仓库时,可以指定仓库最初是在“已启动”(即运行)还是“已暂停”状态下创建。如果选择“已启动”,则为仓库配置好全部计算资源后,仓库就会开始消耗 Credit。
备注
如果您选择在“已启动”状态下创建仓库,则仓库可能需要一些时间才能完全可用,因为 Snowflake 需为仓库配置全部计算资源。
启动或恢复仓库¶
仓库可以随时启动,包括初始创建时。仓库创建后,恢复仓库的流程与启动仓库相同。
暂停(即不活动)的仓库可通过 Web 界面或使用 SQL 进行恢复:
- Snowsight:
选择 Admin » Warehouses » <suspended_warehouse_name> » » Resume
- Classic Console:
- SQL:
执行带有
RESUME
关键字的 ALTER WAREHOUSE 命令。
启动仓库通常仅需几秒钟;但极少数情况下,可能需要更长的时间,因为 Snowflake 需为仓库配置计算资源。
仓库运行时会消耗 Credit:
为仓库配置全部计算资源后,仓库就会开始消耗 Credit。
在极少数情况下,且当某些计算资源无法配置时,仓库仅消耗已配置的计算资源的 Credit。
成功配置剩余的计算资源后,仓库开始消耗全部请求的计算资源的 Credit。
虽然启动或恢复仓库通常只需要几秒钟,但在某些情况下,可能需要更长的时间,因为 Snowflake 需为仓库配置计算资源。
除非仓库的所有计算资源都已成功配置,否则 Snowflake 不会开始执行提交到仓库的 SQL 语句,除非有任何资源配置失败:
如果仓库的任何计算资源在启动期间无法配置,Snowflake 会尝试修复失败的资源。
在修复过程中,50% 或更多请求的计算资源成功配置后,仓库就会开始处理 SQL 语句。
在仓库运行期间,Credit 按每秒计费,每次恢复仓库时最少计费 1 分钟;然而,Credit 消耗以 60 分钟(即每小时)为单位报告。
暂停仓库¶
正在运行的仓库可以随时暂停,甚至在执行 SQL 语句时也是如此。关闭全部计算资源后,暂停仓库就会停止消耗 Credit。
可以通过 Web 界面或使用 SQL 来暂停仓库:
- Snowsight:
选择 Admin » Warehouses » <started_warehouse_name> » » Suspend
- Classic Console:
- SQL:
执行带有
SUSPEND
关键字的 ALTER WAREHOUSE 命令。
当您暂停仓库时,Snowflake 会立即关闭该仓库的全部空闲计算资源,但允许任何正在执行语句的计算资源继续执行,直到语句完成,此时资源将被关闭,仓库的状态更改为“暂停”。待关闭的计算资源被视为处于“静止”模式。
调整仓库大小¶
仓库的大小可以随时调整,包括正在运行和处理语句时。
可以通过 Web 界面或使用 SQL 来调整仓库的大小:
- Snowsight:
- Classic Console:
- SQL:
执行带有
SET WAREHOUSE_SIZE = ...
的 ALTER WAREHOUSE 命令。
当仓库执行的操作将受益于更多计算资源时,将仓库调整为更大的大小非常有用,包括:
提高针对大型数据集的大型复杂查询的性能。
提高加载和卸载大量数据时的性能。
调整正在运行的仓库大小的影响¶
调整正在运行的仓库的大小会添加或移除仓库 每个 群集中的计算资源。与启动或暂停仓库相关的全部使用和 Credit 规则都适用于调整已启动仓库的大小,例如:
添加到仓库的计算资源在配置后开始使用 Credit;但是,除非某些资源配置失败,额外的计算资源在全部配置完毕之前不会开始执行语句。
仅当计算资源不再用于执行任何当前语句时,仓库中才会移除它们。
调整仓库大小不会对仓库当前正在执行的语句产生任何影响。当调整到更大的大小时,新的计算资源在完全配置后,仅用于执行仓库队列中已有的语句以及提交到仓库的所有未来语句。
小技巧
要验证您仓库的额外计算资源是否已完全配置,请将 WAIT_FOR_COMPLETION
参数添加到 ALTER WAREHOUSE 命令。您还可以使用 SHOW WAREHOUSES 检查其 state
。
调整暂停仓库大小的影响¶
调整暂停仓库的大小不会为仓库配置任何新的计算资源。它只需指示 Snowflake 在下次恢复仓库时配置额外的计算资源,此时与启动仓库相关的所有使用和 Credit 规则都适用。
使用仓库¶
要在 Snowflake 中执行查询或 DML 语句,仓库必须正在运行,并且必须将其指定为提交查询/语句的会话的当前仓库。
Snowflake 会话一次只能有一个当前仓库。可以通过 USE WAREHOUSE 命令随时指定或更改会话的当前仓库。
将正在运行的仓库设置为会话的当前仓库后,查询和 DML 会话内提交的语句将由仓库处理。在 Classic Console 的 History 和 Worksheets 页面中,可以查看用于处理每个查询/语句的仓库。
委派仓库管理¶
默认情况下,ACCOUNTADMIN 角色被授予对账户中的所有仓库进行更改、暂停、描述和执行其他操作的能力。
如果您需要将这些能力委派给账户中的自定义角色,您可以使用 GRANT <privileges> 命令授予该角色 MANAGE WAREHOUSES 权限。授予 MANAGE WAREHOUSES 权限相当于授予账户中所有仓库的 MODIFY、 MONITOR 和 OPERATE 权限。
以下示例演示了如何将管理仓库的能力委派给名为 manage_wh_role
的自定义角色。该示例使用 manage_wh_role
对仓库 test_wh
进行更改,此功能由另一角色 (create_wh_role
) 拥有。
创建一个新角色,该角色将创建并拥有一个新仓库,并授予该角色 CREATE WAREHOUSE 权限:
CREATE ROLE create_wh_role;
GRANT CREATE WAREHOUSE ON ACCOUNT TO ROLE create_wh_role;
GRANT ROLE create_wh_role TO ROLE SYSADMIN;
创建第二个角色来管理账户中的所有仓库,并授予该角色 MANAGE WAREHOUSES 权限:
CREATE ROLE manage_wh_role;
GRANT MANAGE WAREHOUSES ON ACCOUNT TO ROLE manage_whs_role;
GRANT ROLE manage_whs_role TO ROLE SYSADMIN;
使用 create_wh_role
角色,创建一个新仓库:
USE ROLE create_wh_role;
CREATE OR REPLACE WAREHOUSE test_wh
WITH WAREHOUSE_SIZE= XSMALL;
将当前角色更改为 manage_wh_role
:
USE ROLE manage_whs_role;
虽然 manage_wh_role
不拥有 test_wh
,但该角色确实有 MANAGE WAREHOUSES 权限,这意味着您可以执行以下操作:
暂停和恢复仓库:
ALTER WAREHOUSE test_wh SUSPEND; ALTER WAREHOUSE test_wh RESUME;
更改仓库大小:
ALTER WAREHOUSE test_wh SET WAREHOUSE_SIZE = SMALL;
描述仓库:
DESC WAREHOUSE test_wh;
在 Snowsight 中查看仓库详细信息¶
您必须使用 ACCOUNTADMIN 角色,或被授予相关 仓库权限 的角色。
要在 Snowsight 中查看仓库和管理仓库详细信息,请完成以下步骤:
登录 Snowsight。
选择 Admin » Warehouses。
然后,您可以查看仓库表、搜索仓库,或者按状态或大小筛选仓库列表。
默认情况下,您可以查看每个仓库的以下信息:
Name
Status,例如 Started、Resuming 或 Suspended。
Size
Clusters,以列中的条形表示。您可以将鼠标悬停在值上,以了解有多少个集群处于活动状态。
Running,以详细了解有多少条 SQL 语句正在由仓库执行。
Queued,以详细了解有多少条 SQL 语句正排队等候仓库执行。
Owner 或仓库的所有者角色。
Resumed,以了解仓库在多久之前恢复。将鼠标悬停在值上,即可查看您当地时区的确切日期和时间戳。
您还可以添加列,以查看表中每个仓库的其他详细信息:
QAS (Scale Factor),以查看 Query Acceleration Service (QAS) 使用的仓库的比例因子。请参阅 使用 Query Acceleration Service。
Scaling Policy,以查看为仓库定义的扩展策略。请参阅 为多集群仓库设置扩展策略。
Auto Resume,以查看是否为仓库设置了自动恢复。
Auto Suspend,以查看仓库自动暂停之前的时间段。
Created,以查看仓库的创建时间。将鼠标悬停在值上,即可查看您当地时区的确切日期和时间戳。
在 Warehouses 表中选择仓库后,可以查看更多详细信息:
Warehouse Activity 部分提供了一段时间内的仓库负载图,该图可以帮助您了解查询运行缓慢的原因。有关更多详细信息,请参阅 监控仓库负载。
Details 部分提供有关仓库的其他信息,包括:
仓库的状态。
仓库的大小。
仓库可以使用的最大和最小群集数。
扩展策略。
正在运行和排队的任务数量。
仓库自动暂停之前的无活动期。
如果仓库暂停,是否在需要时自动恢复仓库。
仓库最后一次恢复操作。
可以使用 Privileges 部分查看、授予和撤消对仓库的权限。