仓库概述

查询和所有 DML 操作(包括将数据加载到表中)都需要使用仓库。除了可以按类型将仓库定义为标准型或 Snowpark 优化型之外,还可以按大小和其他属性(设置这些属性能帮助控制和自动化仓库活动)来定义仓库。

仓库可以随时启动和停止。仓库还可以随时调整规模(甚至在运行时也是如此),以根据仓库正执行的操作类型来适应更多或更少计算资源的需求。

本主题内容:

仓库规模

规模指定仓库中每个集群可用的计算资源量。Snowflake 支持以下仓库规模:

仓库规模

credit / 小时

credit / 秒

备注

X-小

1

0.0003

在 Snowsight 中用 CREATE WAREHOUSE 创建的仓库的默认规模。

2

0.0006

4

0.0011

8

0.0022

X-大

16

0.0044

使用 Classic Console 创建的仓库的默认规模。

2X-大

32

0.0089

3X-大

64

0.0178

4X-大

128

0.0356

5X-大

256

0.0711

在 Amazon Web Services (AWS) 和 Microsoft Azure 区域正式发布,在 US 政府区域提供预览版。

6X-大

512

0.1422

在 Amazon Web Services (AWS) 和 Microsoft Azure 区域正式发布,在 US 政府区域提供预览版。

较大的仓库规模

较大的仓库规模(5X-大 和 6X-大)在所有 Amazon Web Services (AWS) 区域和 Microsoft Azure 区域正式发布。

较大的仓库规模在 US 政府区域(需要 ARM 上的 FIPS 支持)提供预览版。

对 Credit 使用量和计费的影响

如上表所示,当您将仓库规模增加到下一个更大的仓库规模时,对于仓库运行的每个完整小时,Credit 使用量都会翻倍;但是,请注意,Snowflake 采用按秒计费方式(每次仓库启动时最少 60 秒),因此仓库仅按照其实际使用的 credit 付费。

计费的总 credit 取决于仓库连续运行的时间长度。为了进行比较,下表显示了三个不同规模的仓库基于其运行时间的计费总计(总计四舍五入到最接近的 credit 的千分之一):

运行 时间

credit . (X-小)

credit . (X-大)

credit . (5X-大)

0-60 秒

0.017

0.267

4.268

61 秒

0.017

0.271

4.336

2 分钟

0.033

0.533

8.532

10 分钟

0.167

2.667

42.668

1 小时

1.000

16.000

256.000

备注

  • 对于 多集群仓库,计费的 credit 根据仓库规模和时间段内运行的集群数来计算。

    例如,如果“3X-大”的多集群仓库运行 1 个集群一整小时,然后在接下来的一 小时内运行 2 个集群,则计费的总 credit 将为 192(即 64 + 128)。

    多集群仓库是 Enterprise Edition 的功能。

对数据加载的影响

增加仓库规模 一定能提高数据加载性能。正在加载的文件数量(以及每个文件的大小)对数据加载性能的影响,要大于仓库大小的影响。

小技巧

除非同时批量加载大量文件(即数百或数千个文件),否则一般使用较小的仓库(小、中、大)就足够了。使用更大的仓库(“X-大”、“2X-大”等)会消耗更多 credit,而且可能不会带来任何性能提升。

有关更多数据加载技巧和指南,请参阅 数据加载注意事项

对查询处理的影响

仓库的规模可能会影响执行提交到仓库的查询所需的时间,特别是对于较大、较复杂的查询。一般来说,查询性能随着仓库规模而变化,因为更大的仓库有更多的计算资源可用于处理查询。

如果仓库处理的查询运行缓慢,您可以随时调整仓库规模以预置更多计算资源。额外的资源不会影响任何已经运行的查询,但是一旦完全预置这些资源,它们就可供任何排队或新提交的查询使用。

小技巧

对于小型的基本查询来说,更大的仓库并不一定更快。

有关更多仓库技巧和指南,请参阅 仓库注意事项

自动暂停和自动恢复

仓库可以设置为根据活动自动恢复或暂停:

  • 默认情况下,自动暂停处于启用状态。如果仓库在指定时间段内不活动,Snowflake 会自动暂停仓库。

  • 默认情况下,自动恢复处于启用状态。Snowflake 会在提交任何需要仓库的语句时自动恢复仓库, 并且 该仓库成为会话的当前仓库。

这些属性可用于简化和自动化对仓库的监控和使用,以匹配工作负载。自动暂停可确保在没有传入的查询时不会让仓库保持运行状态(并使用 credit)。同样,自动恢复可确保在需要仓库时立即重新启动仓库。

备注

自动暂停和自动恢复仅适用于整个仓库,不适用于仓库中的各个集群。对于 多集群仓库

  • 仅当正在运行最少数量的集群且在指定时间段内没有任何活动时,才会发生自动暂停。最少数量通常为 1(集群),但也可能超过 1。

  • 自动恢复仅适用于整个仓库暂停时(即没有集群正在运行)。

查询处理和并发性

仓库可以并发处理的查询数量由每个查询的大小和复杂性决定。提交查询时,仓库会计算并保留处理每个查询所需的计算资源。如果仓库没有足够的剩余资源来处理查询,查询将成为排队的待处理资源,并且在其他正在运行的查询完成时可供处理。

Snowflake 提供了一些对象级参数,可以设置这些参数来帮助控制查询处理和并发性:

备注

如果查询的排队情况超出预期,则可以创建另一个仓库,并可以将查询手动重定向到新仓库。此外,调整仓库规模可以限制查询并发性和排队强度的升降幅度;但是,调整仓库规模主要是为了提高查询性能。

为了实现全自动的并发性升降,Snowflake 建议使用 多集群仓库,这些仓库提供在本质上与创建额外仓库和重定向查询相同的好处,但不需要手动干预。

多集群仓库是 Enterprise Edition 的功能。

会话中的仓库使用情况

在 Snowflake 中发起会话后,默认情况下,该会话没有与其关联的仓库。在会话具有与其关联的仓库之前,无法在会话内提交查询。

用户的默认仓库

为便于在发起会话后立即进行查询,Snowflake 支持为每个用户指定一个默认仓库。用户的默认仓库将用作该用户发起的所有会话的仓库。

创建或修改用户时,可以通过 Web 界面或使用 CREATE USER/ALTER USER 指定默认仓库。

客户端实用程序/驱动程序/连接器的默认仓库

除了用户的默认仓库之外,任何 Snowflake 客户端(SnowSQL、JDBC 驱动程序、ODBC 驱动程序、Python Connector等)都可以有默认仓库:

  • SnowSQL 支持通过配置文件和命令行选项来指定默认仓库。

  • 驱动程序和连接器支持在发起会话时指定默认仓库作为连接参数。

有关更多信息,请参阅 连接到 Snowflake

默认仓库的优先顺序

当用户连接到 Snowflake 并启动会话时,Snowflake 按以下顺序确定会话的默认仓库:

  1. 用户的默认仓库,

    » 替换为...

  2. 用于连接 Snowflake 的客户端实用程序(SnowSQL、JDBC 驱动程序等)的配置文件中的默认仓库(如果客户端支持配置文件),

    » 替换为...

  3. 在客户端命令行上指定或通过传递给 Snowflake 的驱动程序/连接器参数指定的默认仓库。

备注

此外,可以通过在会话内执行 USE WAREHOUSE 命令随时更改会话的默认仓库。

语言: 中文