Google bigquery 理解BigQuery中的所有并行性

Google bigquery 理解BigQuery中的所有并行性,google-bigquery,Google Bigquery,问题范围: 我试图理解在BigQuery内部的日期分区表中使用union all运算符时的并行性。我想知道我是否正确理解“引擎盖下”发生的事情 我目前的做法如下: +跨5、10、20、30、60个日期分区测试单个查询 注意:我不能包含查询,因为它包含一些专有内容:( 参考资料: 我的推理: 1日期分区: 看起来很简单。没有太多的等待。查询主要由聚合/计算步骤控制 5个日期分区: 从1-date分区来看,似乎没有太多变化。在我看来,这表明读取和聚合的并行性,而不会牺牲许多不可并行化的计算 10

问题范围:

我试图理解在BigQuery内部的日期分区表中使用union all运算符时的并行性。我想知道我是否正确理解“引擎盖下”发生的事情

我目前的做法如下: +跨5、10、20、30、60个日期分区测试单个查询

注意:我不能包含查询,因为它包含一些专有内容:(

参考资料:

我的推理:

1日期分区: 看起来很简单。没有太多的等待。查询主要由聚合/计算步骤控制

5个日期分区: 从1-date分区来看,似乎没有太多变化。在我看来,这表明读取和聚合的并行性,而不会牺牲许多不可并行化的计算

10个日期分区: 等待悄悄地上升。仍然由计算和读取步骤主导。这里也有一些读取倾斜,我认为这是自然的,因为有更多的碎片正在被读取

20个日期分区: 比以前多了一点等待,但差别实在微不足道

30个日期分区: 与上一个查询相比,出现了明显的跳跃。等待倾斜是明显的,等待似乎是明显的。还有一些写入倾斜,并且计算步骤似乎不再占主导地位

60个日期分区: 最后,等待是非常明显的,似乎对读取和计算造成了阴影。如果我理解正确,写倾斜会有一个跳跃

我需要你的地方:


从我的实验来看,当我们达到30/60个日期分区时,性能似乎真的会下降。据我所知,增加的等待时间暗示了所有可用插槽的使用。是否有任何文档或最佳做法,甚至是方法来扩大规模,使性能不会随着我们跨更多日期分区进行并行化而下降。

您有什么建议吗固定费率预订?还是您依赖于按需定价?@ElliottBrossard从计费页面,我相信我们依赖于按需定价(似乎BQ的当前计费依赖于使用)尽管我们愿意考虑统一费率计费。看看stack driver,我们似乎有2000个可用插槽,我不确定这是哪一种定价类别的固有插槽。当您使用按需定价时,您将限制在2000个插槽,因此一旦您同时使用所有插槽,性能将开始下降。取消第Lellism,您需要改用固定费率定价模式。是吗?他们应该能够帮助您确定哪种定价模式更适合您。@ElliottBrossard感谢您的回答。这肯定在我们的计划范围内。但是,对于依赖工会的查询,您有什么建议或诀窍吗-所有的并行性和一致性都是我们正在做的“Ok”就使用BigQuery而言?另外,在执行查询之前是否有预分配的碎片计数,以便在某些情况下,不管等待的时间是多少,大查询是否使用某种动态碎片分配来允许最大的并行性(给定足够的资源)?这是正确的。听起来您对系统如何工作以及如何扩展特定项目(基本上只是通过增加可用的插槽)。您是否有固定费率预订?或者您是否依赖于按需定价?@ElliottBrossard从计费页面上看,我相信我们依赖于按需定价(似乎BQ当前的计费依赖于使用情况)尽管我们愿意考虑统一费率计费。看看stack driver,我们似乎有2000个可用插槽,我不确定这是哪一种定价类别的固有插槽。当您使用按需定价时,您将限制在2000个插槽,因此一旦您同时使用所有插槽,性能将开始下降。取消第Lellism,您需要改用固定费率定价模式。是吗?他们应该能够帮助您确定哪种定价模式更适合您。@ElliottBrossard感谢您的回答。这肯定在我们的计划范围内。但是,对于依赖工会的查询,您有什么建议或诀窍吗-所有的并行性和一致性都是我们正在做的“Ok”就使用BigQuery而言?另外,在执行查询之前是否有预分配的碎片计数,以便在某些情况下,不管等待的时间是多少,大查询是否使用某种动态碎片分配来允许最大的并行性(给定足够的资源)?这是正确的。听起来您对系统如何工作以及如何扩展特定项目(基本上就是通过拥有更多可用插槽)。