当从多个分表查询超过 4 亿行时,BigQuery 的预期查询响应性能是多少?

Posted

技术标签:

【中文标题】当从多个分表查询超过 4 亿行时,BigQuery 的预期查询响应性能是多少?【英文标题】:What is the expected query response performance for BigQuery when querying over 400 million rows form multiple sharded tables? 【发布时间】:2013-05-24 18:58:12 【问题描述】:

我注意到,当从多个分片表查询超过 4 亿行时,BigQuery 的性能一直很慢(响应时间在 30 秒到 1 分钟之间)。

我在一天中的不同时间(下午、深夜和早上)运行了 3 次查询,通知响应时间一直很慢。查询使用了可能有很多唯一值的group-by字符串字段,然后按另一个整数值的总和降序排序,最后只返回前10个。

我已经对相同的架构和相同的查询进行了性能计时测试,但将所有数据存储在一到五个表中,发现性能始终低于 10 秒。

查询具有 4 亿到 20 亿行分片在 7 到 90 个分片表中的数据集的预期响应时间是多少?在更多表中分片数据会导致查询性能变慢吗?仅供参考,每个分片表至少有 2400 万到 1.44 亿行。它们不是很小的桌子。

【问题讨论】:

【参考方案1】:

预期的查询性能在很大程度上取决于您的查询。您是否在查询中使用 GROUP EACH BY?

除非表的数量非常大(数百或数千),否则您的数据分片到的表的数量应该不会对查询性能产生太大影响。如果您看到性能差异,则可能有问题。您是否介意共享您正在运行的查询或快速查询与慢速查询的项目和作业 ID?

【讨论】:

我一直在使用 group each by。我应该避免将它用于分片表吗?项目 ID 是 atbflow。这是快速的 bqjob_r3d7cf424fae4ce4b_0000013ed3ba2970_1。这是今天早上运行的慢查询之一:bqjob_r7be8afd6b1a257e3_0000013ed78bc6ae_1。 可能是因为 group by 字段是具有很多唯一值的字符串,我经常收到错误“查询执行期间超出资源。查询包含 GROUP BY 运算符,请考虑改用 GROUP EACH BY。”如果我只是使用 group by。

以上是关于当从多个分表查询超过 4 亿行时,BigQuery 的预期查询响应性能是多少?的主要内容,如果未能解决你的问题,请参考以下文章

从 bigquery 查询整行时如何将模式与行合并 - java

Bigquery UDF 重复查询。错误:标量子查询不能超过一列

运行查询时出现 BigQuery 错误“解析从位置开始的行时检测到错误:219019。错误:缺少右双引号 (”) 字符

mysql 存储及查询亿级数据

10亿级别订单的分库分表方案

BigQuery 在选择不同行时按一个字段中的最大值分组