使用仓库

所有仓库任务都可通过 Snowflake Web 界面或使用仓库 DDL 命令执行。

本主题内容:

创建仓库

可以通过 Web 界面或使用 SQL 创建仓库:

Snowsight:

选择 Admin » Warehouses » Warehouse

Classic Console:

选择 Warehouses Warehouses 选项卡 » Create

SQL:

执行 CREATE WAREHOUSE 命令。

创建仓库时,可以指定仓库最初是在“已启动”(即运行)还是“已暂停”状态下创建。如果选择“已启动”,则为仓库配置好全部计算资源后,仓库就会开始消耗 Credit。

备注

如果您选择在“已启动”状态下创建仓库,则仓库可能需要一些时间才能完全可用,因为 Snowflake 需为仓库配置全部计算资源。

启动或恢复仓库

仓库可以随时启动,包括初始创建时。仓库创建后,恢复仓库的流程与启动仓库相同。

暂停(即不活动)的仓库可通过 Web 界面或使用 SQL 进行恢复:

Snowsight:

选择 Admin » Warehouses » <suspended_warehouse_name> » 更多选项 » Resume

Classic Console:

选择 Warehouses Warehouses 选项卡 » <suspended_warehouse_name> » Resume

SQL:

执行带有 RESUME 关键字的 ALTER WAREHOUSE 命令。

启动仓库通常仅需几秒钟;但极少数情况下,可能需要更长的时间,因为 Snowflake 需为仓库配置计算资源。

仓库运行时会消耗 Credit:

  • 为仓库配置全部计算资源后,仓库就会开始消耗 Credit。

    • 在极少数情况下,且当某些计算资源无法配置时,仓库仅消耗已配置的计算资源的 Credit。

    • 成功配置剩余的计算资源后,仓库开始消耗全部请求的计算资源的 Credit。

  • 虽然启动或恢复仓库通常只需要几秒钟,但在某些情况下,可能需要更长的时间,因为 Snowflake 需为仓库配置计算资源。

  • 除非仓库的所有计算资源都已成功配置,否则 Snowflake 不会开始执行提交到仓库的 SQL 语句,除非有任何资源配置失败:

    • 如果仓库的任何计算资源在启动期间无法配置,Snowflake 会尝试修复失败的资源。

    • 在修复过程中,50% 或更多请求的计算资源成功配置后,仓库就会开始处理 SQL 语句。

在仓库运行期间,Credit 按每秒计费,每次恢复仓库时最少计费 1 分钟;然而,Credit 消耗以 60 分钟(即每小时)为单位报告。

备注

仓库必须正在运行,并且是会话的当前仓库(即 正在使用)才能处理会话上提交的 SQL 语句。有关更多信息,请参阅此主题中的 `使用仓库`_

暂停仓库

正在运行的仓库可以随时暂停,甚至在执行 SQL 语句时也是如此。关闭全部计算资源后,暂停仓库就会停止消耗 Credit。

可以通过 Web 界面或使用 SQL 来暂停仓库:

Snowsight:

选择 Admin » Warehouses » <started_warehouse_name> » 更多选项 » Suspend

Classic Console:

选择 Warehouses Warehouses 选项卡 » <started_warehouse_name> » Suspend

SQL:

执行带有 SUSPEND 关键字的 ALTER WAREHOUSE 命令。

当您暂停仓库时,Snowflake 会立即关闭该仓库的全部空闲计算资源,但允许任何正在执行语句的计算资源继续执行,直到语句完成,此时资源将被关闭,仓库的状态更改为“暂停”。待关闭的计算资源被视为处于“静止”模式。

调整仓库大小

仓库的大小可以随时调整,包括正在运行和处理语句时。

可以通过 Web 界面或使用 SQL 来调整仓库的大小:

Snowsight:

选择 Admin » Warehouses » <warehouse_name> » 更多选项 » Edit

Classic Console:

选择 Warehouses Warehouses 选项卡 » <warehouse_name> » Configure

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 History 选项卡Worksheets Worksheet 选项卡 页面中,可以查看用于处理每个查询/语句的仓库。

委派仓库管理

默认情况下,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;
Copy

创建第二个角色来管理账户中的所有仓库,并授予该角色 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;
Copy

使用 create_wh_role 角色,创建一个新仓库:

USE ROLE create_wh_role;
CREATE OR REPLACE WAREHOUSE test_wh
    WITH WAREHOUSE_SIZE= XSMALL;
Copy

将当前角色更改为 manage_wh_role

USE ROLE manage_whs_role;
Copy

虽然 manage_wh_role 不拥有 test_wh,但该角色确实有 MANAGE WAREHOUSES 权限,这意味着您可以执行以下操作:

  • 暂停和恢复仓库:

    ALTER WAREHOUSE test_wh SUSPEND;
    ALTER WAREHOUSE test_wh RESUME;
    
    Copy
  • 更改仓库大小:

    ALTER WAREHOUSE test_wh SET WAREHOUSE_SIZE = SMALL;
    
    Copy
  • 描述仓库:

    DESC WAREHOUSE test_wh;
    
    Copy

在 Snowsight 中查看仓库详细信息

您必须使用 ACCOUNTADMIN 角色,或被授予相关 仓库权限 的角色。

要在 Snowsight 中查看仓库和管理仓库详细信息,请完成以下步骤:

  1. 登录 Snowsight。

  2. 选择 Admin » Warehouses

然后,您可以查看仓库表、搜索仓库,或者按状态或大小筛选仓库列表。

默认情况下,您可以查看每个仓库的以下信息:

  • Name

  • Status,例如 StartedResumingSuspended

  • 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 部分查看、授予和撤消对仓库的权限。

语言: 中文