联合分区上的查询运行速度比一个表慢得多

时间:2013-07-05 10:15:45

标签: google-bigquery

在stackoverflow&有了googlers的建议,我们努力为bq表实现每日分区策略,但是,我们面临的问题是,当有超过30个分区时,需要更长的时间(可能是2-3倍)。 所以3个月,是90个分区,即使在总共1000万行的小数据集上,那么它比两个10m行的事实慢两倍。我们将有6个月会发生什么?

为什么?什么是正确的方法?

此外,我们发现GAE有时会遇到运行大查询大小字符串的问题,尽管文档声称限制非常大。

非常感谢

1 个答案:

答案 0 :(得分:1)

我遇到了与事务数据日志类似的问题。起初我们尝试使用一个巨大的表来存储每日交易数据(对于我们来说,这是第二个数据)。我还发现了一些东西,表示可以使用表格分区来实现更好的性能,但是当你按照你所描述的那样尝试(白天)时,我们的性能比我们尝试使用一个巨大的表格要糟糕得多。

最后经过反复试验,我们发现对我们来说最好的事情就是每月进行一次表分区 - 这样可以获得更好的查询性能(几乎快两倍!)。显然,我认为这取决于您的查询(例如,如果有连接等)以及您的应用程序的特定要求。对我们来说,业务规则是我们只存储3年的客户数据,因此我们在任何给定时间内拥有的分区表的最大数量将为36,但这可能不适合您的应用程序。需要。

注意 - 我们不在GAE上,我们只是通过脚本使用原始BigQuery API,但我希望GAE托管应用的效果会更好。

我还应该补充一点,我们的平均查询大约有3000万行,但数据本身并不是非常冗长(很多小字符串和INT)