问题范围:
我尝试在BigQuery内部使用日期分区表时使用union-all运算符时理解并行性。我想知道我是否理解发生了什么"引擎盖下#34;"正确。
我目前的做法如下: +在5个,10个,20个,30个,60个日期分区中测试单个查询
注意:我不能包含查询,因为它包含一些专有内容:(
参考:
我的推理:
1个日期分区: 看起来很简单。等待的时间不多了。查询由聚合/计算步骤控制。
5个日期分区: 从1日期分区看起来真的没什么变化。对我来说,这表示读取和聚合的并行性,而不会牺牲大部分不可并行化的计算。
10个日期分区: 等待爬行。仍然由计算和读取步骤主导。还有一些读取偏斜,我想这是很自然的,因为正在阅读更多的分片。
20个日期分区: 比以前多一点,但差别确实可以忽略不计。
30个日期分区: 从之前的查询中明显跳转。等待倾斜很明显,等待似乎很明显。还有一些写偏斜,似乎计算步骤不再占主导地位。
60个日期分区: 最后,等待真的很明显,似乎是影子阅读和计算。如果我理解正确,写入偏斜就会跳跃。
我需要你的地方:
从我的实验中看,当我们达到30/60个日期分区时,性能似乎确实会降低。根据我的理解,增加的等待时间暗示了所有可用插槽的使用。是否有任何文档或最佳实践甚至是扩展方法,以便在我们跨更多日期分区并行化时性能不会下降。