日期分区或日期分片

Posted

技术标签:

【中文标题】日期分区或日期分片【英文标题】:Date partition or date sharded 【发布时间】:2019-04-18 13:24:10 【问题描述】:

我在 BigQuery 中有许多日期分片的表,包括几年的 Google Analytics(分析)数据。最近有人告诉我,这是旧的优化方法,而且日期分区要快得多。

这是正确的吗?我一直在寻找提高对这些数据的查询速度的方法,如果日期分区允许更快的查询,我应该将所有日期分片 GA 表重建为日期分区吗?我应该两者都做吗?我可以期待看到什么样的性能影响,真的值得付出努力吗?

【问题讨论】:

阅读这篇文章了解一些最佳实践:medium.com/google-cloud/… 【参考方案1】:

Google 文档中的这个页面相对彻底地回答了这个问题:https://cloud.google.com/bigquery/docs/partitioned-tables#partitioning_versus_sharding

最相关部分:

分区表的性能优于按日期分片的表。当您创建以日期命名的表时,BigQuery 必须为每个以日期命名的表维护一份架构和元数据的副本。此外,当使用以日期命名的表时,可能需要 BigQuery 来验证每个查询表的权限。这种做法还会增加查询开销并影响查询性能。推荐的最佳做法是使用分区表而不是日期分片表

您的性能改进主要取决于您拥有多少以前的分片以及您在单个查询中始终访问其中的多少。

【讨论】:

好的,Eric,我想补充一点,BigQuery 的主要版本之一是集群,它是一种能够快速访问并降低成本的索引。此功能仅在新分区表上可用。有关详细信息,请参阅此link。 谢谢两位,我阅读了文档,但在重建大量表之前正在寻找一些现实世界的强化 - 我想我最好开始分区工作! 啊,希望有人停下来,自己完成了这个过程。否则,如果您继续使用它,请更新一些运行时示例。 我也在考虑按日期分区,但似乎需要分片和分区的组合,因为表有 4000 个分区的限制

以上是关于日期分区或日期分片的主要内容,如果未能解决你的问题,请参考以下文章

Big Query 中的表未分区

在 2 TB 数据的 BigQuery 中进行日期分区的有效方法是啥?

列中的 BigQuery 日期分区

Mycat 分片策略

BigQuery、日期分区表和装饰器

ORA-14308: 分区绑定元素必须是以下之一:字符串、日期时间或间隔文字、数字或 NULL