尝试查询加速

本主题概述了仓库所有者或管理员如何使用 Query Acceleration Service 来提高在仓库上运行的查询的性能。有关查询加速的完整详细信息,请参阅 使用 Query Acceleration Service

Query Acceleration Service 可将部分查询处理的工作卸载到 无服务器计算资源,从而加快查询的处理速度,同时减少对仓库计算资源的需求。

当仓库具有异常值查询(即使用比典型查询更多资源的查询)时,Query Acceleration Service 还可以提高仓库其他查询的性能,因为异常值查询的额外计算需求已卸载到无服务器计算资源。

可能从 Query Acceleration Service 中受益的工作负载示例包括临时分析、每次查询的数据量不可预测的工作负载,以及具有大量扫描和选择性筛选器的查询。

备注

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

查找查询加速的候选项

您可以使用函数或查询来确定启用 Query Acceleration Service 是否可以提高查询或查询集的性能。

函数:确定特定查询是否可能受益

SYSTEM$ESTIMATE_QUERY_ACCELERATION 函数允许您检查特定查询是否是 Query Acceleration Service 的良好候选项。

该函数接受查询 ID 作为其唯一实参。将函数封装在函数中 PARSE_JSON 更便于解读结果。例如:

select parse_json(system$estimate_query_acceleration('8cd54bf0-1651-5b1c-ac9c-6a9582ebd20f'));
Copy

如果查询是 Query Acceleration Service 的候选查询,并且尚未加速,则响应的 statuseligible。状态为 ineligible 表示在为仓库启用 Query Acceleration Service 时,将不利于查询。

有关评估特定查询的 Query Acceleration Service 的其他信息,包括不同比例因子的估计执行时间,请参阅 参考文档

查询:跨仓库的最佳查询候选项

此查询通过计算符合加速条件的查询执行时间,来确定可从 Query Acceleration Service 中受益最多的查询。

SELECT query_id, eligible_query_acceleration_time
  FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_ELIGIBLE
  ORDER BY eligible_query_acceleration_time DESC;
Copy

查询:按执行时间划分的最佳仓库候选项

此查询可确定从 Query Acceleration Service 中受益最多的仓库。对于每个仓库,它会计算出符合加速条件的总查询执行时间。

SELECT warehouse_name, SUM(eligible_query_acceleration_time) AS total_eligible_time
  FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_ELIGIBLE
  GROUP BY warehouse_name
  ORDER BY total_eligible_time DESC;
Copy

查询:按查询次数排序的最佳仓库候选项

此查询可确定给定时间段内符合 Query Acceleration Service 条件的查询次数最多的仓库。

SELECT warehouse_name, COUNT(query_id) AS num_eligible_queries
  FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_ELIGIBLE
  WHERE start_time > 'Mon, 29 May 2023 00:00:00'::timestamp
  AND end_time < 'Tue, 30 May 2023 00:00:00'::timestamp
  GROUP BY warehouse_name
  ORDER BY num_eligible_queries DESC;
Copy

成本注意事项

查询加速仓库租用的无服务器计算资源使用的 credit 与仓库使用的 credit 无关,需要单独计费。

Query Acceleration Service 是为整个仓库启用的,但与扩大仓库规模不同,它仅用于受益于计算能力提高的查询。对于运行混合工作负载的仓库来说,这可能具有成本效益,因为不需要额外计算资源的查询不会产生使用较大仓库的额外成本。

借助仓库的 比例因子,您可以控制 Query Acceleration Service 的成本。此比例因子是仓库 credit 使用量的乘数,它为仓库可以使用多少无服务器计算设置了限制。例如,如果仓库的比例因子为 5,则无服务器计算资源的 credit 消耗率不能超过仓库消耗率的 5 倍。

可以使用 SYSTEM$ESTIMATE_QUERY_ACCELERATION 函数来评估比例因子如何影响查询的性能。

要在不考虑成本的情况下最大限度地提高性能,请将比例因子设置为 0。

如何启用 Query Acceleration Service

要启用 Query Acceleration Service 并最大限度地提高性能,请使用 ALTER WAREHOUSE 命令,如下所示:

ALTER WAREHOUSE my_wh SET
  ENABLE_QUERY_ACCELERATION = true
  QUERY_ACCELERATION_MAX_SCALE_FACTOR = 0;
Copy
语言: 中文