Bigquery 分片与 Bigquery 分区

Posted

技术标签:

【中文标题】Bigquery 分片与 Bigquery 分区【英文标题】:Bigquery Shard Vs Bigquery Partition 【发布时间】:2016-09-15 15:26:33 【问题描述】:

我有一张包含 340GB 数据的表,但我们只使用了最近一周的数据。因此,为了最大限度地减少将这些数据移动到分区表或分片表的成本计划。

我对分片表和分区做了一些实验。我创建了分区表并加载了两天的数据(两个分区)并创建了两个分片表(单个表)。我试图提取过去两天的数据。

全桌 - 27 秒 分区表 - 33 秒 分片表 - 91 秒

请告诉我哪种方式最好。根据实验结果,当我针对全表运行但全表会扫描时,速度很快。

谢谢,

【问题讨论】:

您能否提供您用于比较的两个查询?知道这两个工作 ID 也很有用。 (我不需要项目 ID)。 【参考方案1】:

根据Partitioning versus Sharding 上的 GCP 官方文档,您应该使用分区表。

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

【讨论】:

【参考方案2】:

性能差异似乎是由于一些后台优化已在非分区表上运行,但尚未在分区表上运行(因为数据较新)。

【讨论】:

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

是否有元数据表来检查 BigQuery 中的表是否已分区?

Big Query 中的表未分区

如何对 BigQuery 表进行分片?

BigQuery:将表插入到具有分片表的现有 Google 分析中

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

BigQuery 表如何与分区和集群字段一起使用?