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

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



