BigQuery 中的联接性能缓慢

Posted

技术标签:

【中文标题】BigQuery 中的联接性能缓慢【英文标题】:slow performance of join in BigQuery 【发布时间】:2017-11-08 16:44:48 【问题描述】:

我最近的经验似乎表明,带连接的 BigQuery 的执行速度比只有一张表的要慢得多。通常大多数查询将在几分钟内完成。但是下面的连接查询需要 6000 多秒才能完成,其中 table1 有大约 10 亿行,table2 有大约 100 万行。

SELECT a.*, coalesce(b.field4, a.field3) 
FROM `table1` a left outer join `table2` b
on a.field1 = b.field1 and a.field2 = b.field2

只是想问问社区这是预期的还是需要进一步调查?

【问题讨论】:

您是否使用“说明”选项卡检查了查询计划?它显示了时间的去向。 是的,实际上大部分时间都花在了Compute最后阶段(Stage5)的一部分READ $80, $81, $82, $83, $84, ... FROM __SHUFFLE0 WRITE $80, $81, $82, $83, $84, ... TO __output 有多少行被写入输出?您能否在问题的解释中包含慢速阶段(或全部)的屏幕截图? 当然,刚刚添加到我的帖子中 看起来查询不应该花很长时间来读/写十亿行。您可以使用示例作业 ID 尝试 submitting a bug report to the issue tracker,让 BigQuery 团队的人员查看。 【参考方案1】:

解决方案是指定一个目标表。这将使总时间减少到不到 200 秒。

【讨论】:

以上是关于BigQuery 中的联接性能缓慢的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery 更新与内部联接

BigQuery 无法识别联接中子选择的字段

通过联接合并到 BigQuery 分区表中,无需扫描整个表

联接表结果 Google BigQuery

BigQuery 交叉联接失败

BigQuery:使用子查询和内部联接的计数更新行