BigQuery查询性能优化指南
1. 读取查询计划信息
在评估查询性能时,除了测量查询速度和检查日志外,还可以通过查看查询计划信息来诊断查询性能。查询计划信息会列出查询被分解的各个阶段,并提供每个阶段中每个执行步骤所处理数据的相关信息。
1.1 查询计划的动态性
在BigQuery中,SQL语句的执行图会被拆分为多个查询阶段,每个阶段由多个工作节点并行执行工作单元。各阶段通过分布式洗牌架构进行通信,大多数阶段会先读取前一阶段的输出,再将结果写入后续阶段的输入。需要注意的是,查询计划是动态的,因为在执行某个阶段之前,中间阶段的确切数据大小和计算成本是未知的。如果实际大小与预期大小差异很大,可能会引入新的阶段来重新分区数据,以改善工作节点间的数据分布。因此,在探索查询性能时,应在查询完成后查看查询计划信息。
1.2 从作业详情中获取查询计划信息
完成查询的每个阶段的信息包括阶段开始和结束的时间戳、读取和写入的记录总数,以及为处理该查询在所有工作节点上写入的字节数。以下是一个示例查询:
SELECT
start_station_name,
AVG(duration) AS duration,
COUNT(duration) AS num_trips
FROM
`bigquery-public-data`.london_bicycles.cycle_hire
GROUP BY
start_station_name
ORDER BY
num_trips DESC
LIMIT
5
超级会员免费看
订阅专栏 解锁全文
913

被折叠的 条评论
为什么被折叠?



