尝试查询加速¶
本主题概述了仓库所有者或管理员如何使用 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'));
如果查询是 Query Acceleration Service 的候选查询,并且尚未加速,则响应的 status
为 eligible
。状态为 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;
查询:按执行时间划分的最佳仓库候选项
此查询可确定从 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;
查询:按查询次数排序的最佳仓库候选项
此查询可确定给定时间段内符合 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;
成本注意事项¶
查询加速仓库租用的无服务器计算资源使用的 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;