增加仓库规模¶
本主题讨论仓库所有者或管理员如何调整仓库的规模,以提高在其上运行的查询的性能。
仓库越大,可用于执行一项查询或一组查询的计算资源就越多。因此,增加仓库规模成为提高查询性能的直接策略;只需扩大仓库规模,重新运行查询,而如果提高的性能不能证明运行查询的成本增加是合理的,则将仓库恢复到其原始规模。
仓库越大,对更大、更复杂的查询影响最大,并且可能不会提高小型基本查询的性能。
备注
您必须有 访问共享 SNOWFLAKE 数据库的权限,才能执行本主题中提供的诊断查询。默认情况下,只有 ACCOUNTADMIN 角色具有执行查询所需的权限。
确定仓库的负载¶
检查仓库的负载有助于确定规模增加是否有助于提高性能。如果仓库负载过重,并发查询可能会争用其计算资源,在这种情况下,增加仓库规模可能不会带来预期的性能提升。但是,如果您可以确定负载较低,则增加仓库规模很有可能将提高复杂查询的性能。
查询:仓库负载
此查询提供对已执行查询和排队查询的仓库总负载的见解。这些负载值表示时间间隔内处于特定状态的所有查询的总执行时间(以秒为单位)与该时间间隔的总时间(以秒为单位)的比率。
例如,如果 276 秒是 5 分钟(300 秒)间隔内 4 个查询的总时间,则查询负载值为 276/300 = 0.92。
SELECT TO_DATE(start_time) AS date,
warehouse_name,
SUM(avg_running) AS sum_running,
SUM(avg_queued_load) AS sum_queued
FROM snowflake.account_usage.warehouse_load_history
WHERE TO_DATE(start_time) >= DATEADD(month,-1,CURRENT_TIMESTAMP())
GROUP BY 1,2
HAVING SUM(avg_queued_load) >0;
成本注意事项¶
在给定的时间长度内,较大的仓库会消耗更多的 Credit:
仓库规模 |
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 政府区域提供预览版。 |
如果在较大的仓库上执行查询所需的时间较少,则减少的执行时间可以弥补大型仓库运行所增加的成本。例如,如果查询在下个最大仓库上的运行速度提高一倍,则查询的总运行成本保持不变。
小技巧
最佳实践是限制可以调整仓库规模的人员。如果允许用户增加仓库规模以满足个人查询的需求,则如果用户在执行查询后忘记将仓库恢复到原始规模,可能会导致意外成本。
如何增加仓库规模¶
要增加仓库规模,请执行以下步骤:
- Snowsight:
登录 Snowsight。
导航到 Admin » Warehouses。
找到仓库,然后选择 . . . » Edit。
使用 Size 下拉列表选择新的仓库规模。
选择 Save Warehouse。
- SQL:
使用 ALTER WAREHOUSE 命令更改仓库规模。例如:
ALTER WAREHOUSE my_wh SET WAREHOUSE_SIZE = large;