我有一张包含340GB数据的表,但我们只使用最后一周的数据。因此,最小化将此数据移动到分区表或分片表的成本计划。
我已经完成了一些shard表和分区的实验。我创建了分区表并加载了两天的数据(两个分区)并创建了两个分片表(单个表)。我试着提取最后两天的数据。
全桌 - 27秒 分区表 - 33秒 碎片表 - 91秒
请告诉我哪种方式最好。基于实验结果,当我针对全表运行但是全表将扫描时给出快速。
谢谢,
答案 0 :(得分:1)
根据Partitioning versus Sharding上的GCP官方文档,您应该使用分区表。
分区表的性能优于按日期分片的表。 您创建以日期命名的表时,BigQuery必须维护该表的副本 每个以日期命名的表的架构和元数据。另外,当命名时 使用表,可能需要BigQuery来验证对 每个查询表。这种做法还会增加查询开销, 影响查询性能。推荐的最佳做法是使用 分区表而不是日期分割表。
答案 1 :(得分:0)
性能上的差异似乎是由于某些后台优化已在非分区表上运行,但尚未在分区表上运行(因为数据较新)。