使用仓库

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

创建仓库

You can create a warehouse using the Snowsight or SQL:

Snowsight:

In the navigation menu, select Compute » Warehouses » Warehouse

SQL:

执行 CREATE WAREHOUSE 命令。

Python:

使用 WarehouseCollection.create API (创建仓库)。

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

备注

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

启动或恢复仓库

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

您可以使用以下界面恢复暂停(即非活动)仓库:

Snowsight:

In the navigation menu, select Compute » Warehouses » <suspended_warehouse_name> » 更多选项 » Resume

SQL:

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

Python:

使用 WarehouseResource.resume API (执行仓库操作)。

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

仓库运行时会消耗 Credit:

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

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

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

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

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

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

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

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

备注

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

暂停仓库

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

您可以使用以下界面暂停仓库:

Snowsight:

In the navigation menu, select Compute » Warehouses » <started_warehouse_name> » 更多选项 » Suspend

SQL:

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

Python:

使用 WarehouseResource.suspend API (执行仓库操作)。

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

调整仓库大小

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

您可以使用以下界面调整仓库大小:

Snowsight:

In the navigation menu, select Compute » Warehouses » <warehouse_name> » 更多选项 » Edit

SQL:

执行带有 SET WAREHOUSE_SIZE = ...ALTER WAREHOUSE 命令。

Python:

使用 WarehouseResource.create_or_alter API (创建或更改仓库)。

当仓库执行的操作将受益于更多计算资源时,将仓库调整为更大的大小非常有用,包括:

  • 提高针对大型数据集的大型复杂查询的性能。

  • 提高加载和卸载大量数据时的性能。

调整正在运行的仓库大小的影响

调整正在运行的仓库的大小会添加或移除仓库 每个 群集中的计算资源。与启动或暂停仓库相关的全部使用和 Credit 规则都适用于调整已启动仓库的大小,例如:

  • 添加到仓库的计算资源在配置后开始使用 Credit;但是,除非某些资源配置失败,额外的计算资源在全部配置完毕之前不会开始执行语句。

  • 仅当计算资源不再用于执行任何当前语句时,仓库中才会移除它们。

调整仓库大小不会对仓库当前正在执行的语句产生任何影响。当调整到更大的大小时,新的计算资源在完全配置后,仅用于执行仓库队列中已有的语句以及提交到仓库的所有未来语句。

小技巧

要验证您仓库的额外计算资源是否已完全配置,请将 WAIT_FOR_COMPLETION 参数添加到 ALTER WAREHOUSE 命令。您还可以使用 SHOW WAREHOUSES 检查其 state

调整暂停仓库大小的影响

调整暂停仓库的大小不会为仓库配置任何新的计算资源。它只需指示 Snowflake 在下次恢复仓库时配置额外的计算资源,此时与启动仓库相关的所有使用和 Credit 规则都适用。

使用仓库

要在 Snowflake 中执行查询或 DML 语句,仓库必须正在运行,并且必须将其指定为提交查询/语句的会话的当前仓库。

Snowflake 会话一次只能有一个当前仓库。可以通过 USE WAREHOUSE SQL 命令或 WarehouseResource.use_warehouse Python API 随时指定或更改会话的当前仓库。

Once a running warehouse has been set as the current warehouse for the session, queries and DML statements submitted within the session are processed by the warehouse. In the Query History and Workspaces pages in Snowsight, you can view the warehouse used to process each query/statement.

备注

某些 Snowsight 功能需要一个仓库来运行 SQL 查询以检索数据,例如表的 Task Run HistoryData Preview。建议使用 X-小仓库,它通常足以满足大多数此类查询的需要。有关信息,请参阅 仓库注意事项

委派仓库管理

默认情况下, ACCOUNTADMIN 角色被授予对账户中的所有仓库进行更改、暂停、描述和执行其他操作的能力。

如果您需要将这些能力委派给账户中的自定义角色,您可以授予该角色 MANAGE WAREHOUSES 权限。授予 MANAGE WAREHOUSES 权限相当于授予账户中所有仓库的 MODIFY、 MONITOR 和 OPERATE 权限。

以下示例演示了如何将管理仓库的能力委派给名为 manage_wh_role 的自定义角色。该示例使用 manage_wh_role 对仓库 test_wh 进行更改,此功能由另一角色 (create_wh_role) 拥有。

创建一个新角色,该角色将创建并拥有一个新仓库,并授予该角色 CREATE WAREHOUSE 权限:

使用 GRANT <privileges> ... TO ROLE 命令:

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_wh_role;
GRANT ROLE manage_wh_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_wh_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. Sign in to Snowsight.

  2. In the navigation menu, select Compute » Warehouses.

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

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

  • Name

  • Status,例如 StartedResumingSuspended

  • Size

  • Clusters,以列中的条形表示。您可以将鼠标悬停在值上,以了解有多少个集群处于活动状态。

  • Running,以详细了解有多少条 SQL 语句正在由仓库执行。

  • Queued,以详细了解有多少条 SQL 语句正排队等候仓库执行。

  • Owner 或仓库的所有者角色。

  • Resumed,以了解仓库在多久之前恢复。将鼠标悬停在值上,即可查看您当地时区的确切日期和时间戳。

您还可以添加列,以查看表中每个仓库的其他详细信息:

  • QAS (Scale Factor),以查看 Query Acceleration Service (QAS) 使用的仓库的比例因子。请参阅 Using the Query Acceleration Service (QAS)

  • Scaling Policy,以查看为仓库定义的扩展策略。请参阅 为多集群仓库设置扩展策略

  • Auto Resume,以查看是否为仓库设置了自动恢复。

  • Auto Suspend,以查看仓库自动暂停之前的时间段。

  • Created,以查看仓库的创建时间。将鼠标悬停在值上,即可查看您当地时区的确切日期和时间戳。

Warehouses 表中选择仓库后,可以查看更多详细信息:

  • Warehouse Activity 部分提供了一段时间内的仓库负载图,该图可以帮助您了解查询运行缓慢的原因。有关更多详细信息,请参阅 监控仓库负载

  • Details 部分提供有关仓库的其他信息,包括:

    • 仓库的状态。

    • 仓库的大小。

    • 仓库可以使用的最大和最小群集数。

    • 扩展策略。

    • 正在运行和排队的任务数量。

    • 仓库自动暂停之前的无活动期。

    • 如果仓库暂停,是否在需要时自动恢复仓库。

    • 仓库最后一次恢复操作。

  • 可以使用 Privileges 部分查看、授予和撤销对仓库的权限。

语言: 中文