减少队列

本主题讨论仓库所有者或管理员如何减少排队以提高在仓库上运行的查询的性能。

如果同时向仓库发送太多查询,仓库的计算资源就会耗尽,后续查询将排队直到资源可用。当开始之前查询必须在队列中等待时,提交查询和获取结果之间的时间会更长。

备注

您必须有 访问共享 SNOWFLAKE 数据库的权限,才能执行本主题中提供的诊断查询。默认情况下,只有 ACCOUNTADMIN 角色具有执行查询所需的权限。

查找队列

Snowsight:

要确定特定仓库是否正在排队:

  1. 登录 Snowsight。

  2. 导航到 Admin » Warehouses

  3. 选择仓库。

  4. Warehouse Activity 图表中,使用与 Queued load 关联的颜色来识别队列。

  5. 观察条形高度中呈现的规律,以确定队列是否与使用量激增相关。

SQL:

查询:有排队的仓库

此查询列出了上个月有队列的仓库,按日期排序。

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;
Copy

您还可以针对 QUERY_HISTORY 视图 编写查询,计算查询在队列中花费的时间。

减少队列的选项

您有多种选项来停止仓库排队:

  • 对于常规仓库(即不是多集群仓库),可以考虑创建额外的仓库,然后在这些仓库之间分配查询。如果特定查询导致使用量激增,请重点关注移动这些查询。

  • 考虑将仓库转换成 多集群仓库,因此,当需求激增时,仓库可以弹性地提供额外的计算资源。多集群仓库需要 Snowflake 的 Enterprise Edition

  • 如果您已经使用多集群仓库,请增加集群的最大数量。

成本注意事项

有关运行多集群仓库如何影响 Credit 使用量的说明,请参阅 多集群大小和 Credit 使用量

如果您在自动扩展模式下运行多集群仓库,您可以使用 扩展策略 帮助控制成本。经济扩展策略有利于通过保持集群满载运行而不是启动额外的集群来节省 Credit 而不是追求集群弹性。这可能会导致查询排队并需要更长时间才能完成。

如何配置仓库以减少队列

常规仓库:

要创建可向其分发查询的新仓库,请登录 Snowsight 并选择 Admin » Warehouses。您还可以使用 CREATE WAREHOUSE 命令。

多集群仓库:

要将现有仓库转换为多集群仓库或增加现有仓库的最大集群数,请执行以下操作:

  1. 登录 Snowsight。

  2. 导航到 Admin » Warehouses

  3. 找到仓库,然后选择 . . . » Edit

  4. 如果您要转换为多集群仓库,请开启 Multi-cluster Warehouse 选项。如果您没有看到此选项,请升级到 Enterprise Edition 或更高版本。

  5. 使用 Max Clusters 下拉菜单调整最大集群数。

语言: 中文