仓库概述¶
查询和所有 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 按以下顺序确定会话的默认仓库:
用户的默认仓库,
» 替换为...
用于连接 Snowflake 的客户端实用程序(SnowSQL、JDBC 驱动程序等)的配置文件中的默认仓库(如果客户端支持配置文件),
» 替换为...
在客户端命令行上指定或通过传递给 Snowflake 的驱动程序/连接器参数指定的默认仓库。
备注
此外,可以通过在会话内执行 USE WAREHOUSE 命令随时更改会话的默认仓库。