使用 BigQuery 高级运行时
本文档介绍了如何启用和停用 BigQuery 高级运行时,以及如何评估高级运行时对查询性能的影响。
角色与权限
如需获得指定配置设置所需的权限,请让您的管理员为您授予项目或组织的 BigQuery Admin (roles/bigquery.admin
) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
特性
在 BigQuery 项目中启用高级运行时,即可在查询处理器中开启相关功能,从而在不产生额外费用的情况下缩短查询延迟时间并减少槽消耗量。
增强型矢量化
矢量化执行是一种查询处理模型,可对与 CPU 缓存大小对齐的数据块中的数据列进行操作,并使用单指令多数据 (SIMD) 指令。增强型矢量化功能将 BigQuery 中的矢量化查询执行扩展到查询处理的以下方面:
- 通过利用 Capacitor 存储格式中的专用数据编码,可以对编码后的数据执行过滤条件评估操作。
- 专用编码会通过查询计划进行传播,从而可以在数据仍处于编码状态时处理更多数据。
- 通过实现表达式折叠来评估确定性函数和常量表达式,BigQuery 可以将复杂的谓词简化为常量值。
短查询优化
BigQuery 通常会在分布式环境中使用 Shuffle 中间层来执行查询。短查询优化功能可动态识别可以作为单个阶段运行的查询,从而缩短延迟时间并减少槽消耗。当查询在单个阶段运行时,可以更有效地使用专用编码。与可选作业创建模式搭配使用时,这些优化效果最为显著,因为该模式可最大限度地缩短作业启动、维护和结果检索延迟时间。
短查询优化功能的适用条件是动态变化的,受以下因素的影响:
- 数据扫描的预测大小。
- 所需的数据迁移量。
- 查询过滤条件的选择性。
- 存储空间中数据的类型和物理布局。
- 查询的总体结构。
- 过去查询执行的历史统计信息。
启用高级运行时
如需为项目或组织启用高级运行时,请使用 ALTER PROJECT
或 ALTER ORGANIZATION
语句更改默认配置。在该语句中,将 query_runtime
实参设置为 'advanced'
。例如:
ALTER PROJECTPROJECT_NAME
SET OPTIONS ( `region-LOCATION
.query_runtime` = 'advanced' );
替换以下内容:
PROJECT_NAME
:项目的名称LOCATION
:项目的位置
更改可能需要几分钟才能生效。
启用高级运行时后,项目或组织中的符合条件的查询会使用高级运行时,无论查询作业由哪个用户创建都是如此。
停用高级运行时
如需为项目或组织停用高级运行时,请使用 ALTER PROJECT
或 ALTER ORGANIZATION
语句更改默认配置。在该语句中,将 query_runtime
实参设置为 NULL
。例如:
ALTER PROJECTPROJECT_NAME
SET OPTIONS ( `region-LOCATION
.query_runtime` = NULL );
替换以下内容:
PROJECT_NAME
:项目的名称LOCATION
:项目的位置
更改可能需要几分钟才能生效。
评估查询性能
您可以使用管理作业浏览器和 INFORMATION_SCHEMA
视图来评估高级运行时对查询执行时间和 slot 使用情况的影响。
请按照以下步骤评估启用和未启用高级运行时时的查询性能:
在 Google Cloud 控制台中,前往 BigQuery 页面。
在查询编辑器中打开新标签页。
在查询标签页中输入或复制测试查询。
运行测试查询几次,以确定基准性能。 每次运行后,按如下方式确定查询性能指标:
- 在管理作业探索器中查看查询执行详情。
在新的查询标签页中运行以下查询,从
INFORMATION_SCHEMA.JOBS_BY_USER
视图 中检索作业效果数据:SELECT job_id, end_time - start_time AS duration, total_slot_ms, query FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_USER WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY) AND job_type='QUERY' AND total_slot_ms IS NOT NULL ORDER BY creation_time DESC, query ASC LIMIT 1000;
重复第 5 步。
比较启用高级运行时之前和之后测试查询的查询延迟时间和 slot 使用情况指标。