在stackoverflow和googlers的建议下,我们努力实现了bq表的每日分区策略,然而,我们面临着一个问题,当有超过30个分区时,它需要更长的时间(可能是2-3倍)。因此,3个月就是90个分区,即使是在总共1000万行的小数据集上,它也比只有10m行的小数据集慢两倍。当我们有6个月的时间时会发生什么?
为什么会这样呢?什么是正确的方法?
此外,我们看到GAE有时在运行大查询大小的字符串时会出现问题,尽管文档声称限制非常大。
非常感谢
发布于 2013-07-06 08:04:31
我在事务性数据日志方面也遇到了类似的问题。首先,我们尝试使用一个巨大的表来存储日常事务数据(对我们来说,这是按秒计算的数据)。我还发现,使用表分区可以获得更好的性能,然而,当我们按照您所描述的(每天)尝试这样做时,我们得到的性能比我们尝试使用一个巨大的表时要差得多。
最后,经过反复试验,我们发现对我们来说最好的方法是进行月度表分区--这样可以获得更好的查询性能(几乎快两倍!)。显然,我认为这取决于您的查询(例如,是否存在连接等)。以及你的应用程序的具体要求。对于我们来说,一条业务规则是我们只存储3年的客户数据,因此在任何给定的时间,我们将拥有的分区表的最大数量将是36,但这可能不符合您的应用程序的需求。
注意-我们没有使用GAE,我们只是通过脚本使用原始的BigQuery应用程序接口,尽管我希望在GAE托管的应用程序上性能会更好。
我还应该补充说,我们的平均查询大约是3000万行,但数据本身并不是非常冗长(有很多小字符串和INTs)。
https://stackoverflow.com/questions/17486431
复制相似问题