我在BigQuery中创建了大约450GB的测试数据集,从WebUI运行时,我获得了大约9秒的执行速度来查询最大的表(100亿行)。我只想检查一下这是否正常'预期结果以及是否会因更大的尺寸(即1000亿行+)而变得更糟,并且查询变得更复杂。我知道表分区/等。但我只是想了解什么是正常的'没有先进入优化的预期速度,因为上面看起来像'小'' BQ的大小。
上述结果是通过如下简单查询实现的:
select ColumnA from DataSet.Table order by ColumnB desc limit 100
因此返回客户端的结果非常小。 ColumnA的结构为以String格式表示的UUID,ColumnB是整数。
答案 0 :(得分:3)
几乎不可能说这是否是“正常”。 BigQuery是一种多租户架构/基础架构。这意味着我们在运行查询时共享集群中的相同资源(即计算能力)。因此,BigQuery中的查询时间从不确定性,即它们可以根据在任何给定时间从用户执行的并发查询的数量而变化。但是,您可以获得flat rate price的保留位置。虽然,你需要花费相当多的钱来证明这一点。
您可以通过删除order by
等计算/随机播放/内存密集型步骤来缩短执行时间。显然,查询的复杂性也会对查询时间产生影响。
在我们的一些项目中,我们可以在大约15s-20s内通过相对复杂的查询粉碎3TB-5TB。有时它更快,有时更慢。我们还对可能花费相同时间的小得多的数据集运行查询。这是因为我在开始时写的 - BigQuery查询时间不确定。
最后,BigQuery将缓存结果,因此如果您在同一数据集上多次发出相同的查询,它将从缓存中返回,即更快!