BigQuery 查询需要很长时间

BigQuery query taking a long time

对我的 table 之一的简单计数查询需要很长时间才能完成(~18 秒),这个 table 有大约一百万行,并且在中进行相同的查询更大的 table(大约 300 万)用时不到 3 秒。模式完全相同,查询是一个简单的 SELECT count(*) FROM [dataset.table]

知道为什么会发生这种情况吗?我该怎么做才能防止这种情况发生?

看起来您的 table 的问题在于它是由许多小块创建的;这需要更多的查询工作,因为我们花了很多时间在文件系统操作上(列出文件并打开它们)。

即便如此,table你的尺寸应该不会这么慢; BigQuery 目前正在经历高文件系统负载,这导致了延迟的高度可变性。我们正在积极努力解决这个问题。所以这是第一个问题。

第二个问题是我们可能应该更好地压缩 table。我已经提交了一个内部错误,我们应该调整我们的启发式方法,使其在压缩中更具侵略性。

作为解决方法,您可以通过复制 table 到位来手动压缩 table。换句话说,运行 a SELECT * from ... 并将输出写入相同的 table,使用 writeDisposition:WRITE_TRUNCATEdestinationTable:<your table>allowLargeResults:trueflattenSchema:false.

同样,不需要最后一步,但现在应该可以改善您的情况。