【问题标题】:BigQuery. Long execution time on small datasets大查询。小数据集的执行时间长
【发布时间】:2020-10-09 22:12:33
【问题描述】:

我创建了一个新的 Google 云项目并设置了 BigQuery 数据库。我尝试了不同的查询,它们都执行太久。目前我们没有很多数据,因此预计会有高性能。

以下是一些查询示例及其执行时间。

查询 #1(作业 ID bquxjob_11022e81_172cd2d59ba):

select date(installtime) regtime
  ,count(distinct userclientid) users
  ,sum(fm.advcost) advspent
from DWH.DimUser du
join DWH.FactMarketingSpent fm on fm.date = date(du.installtime)
group by 1

查询在 1 小时内失败 + 出现错误“查询超出资源限制。使用了 14521.457814668494 CPU 秒,并且此查询必须使用少于 12800.0 CPU 秒。”

查询执行计划:https://prnt.sc/t30bkz

查询 #2(作业 ID bquxjob_41f963ae_172cd41083f):

select fd.date 
      ,sum(fd.revenue) adrevenue
      ,sum(fm.advcost) advspent
from DWH.FactAdRevenue fd
join DWH.FactMarketingSpent fm on fm.date = fd.date
group by 1

执行时间约 59.3 秒,已处理 7.7 MB。什么太慢了。

查询执行计划:https://prnt.sc/t309t4

查询 #3(作业 ID bquxjob_3b19482d_172cd31f629)

select date(installtime) regtime
  ,count(distinct userclientid) users 
from DWH.DimUser du 
group by 1

执行时间已过 5.0 秒,已处理 42.3 MB。对于如此少量的数据,这并不可怕,但必须更快。

使用的表: DimUser - 表大小 870.71 MB,行数 2,771,379 FactAdRevenue - 表大小 6.98 MB,行数 53,816 FaceMarketingSpent - 表大小 68.57 MB,行数 453,600

问题是我做错了什么导致查询执行时间如此之长?如果一切正常,我很高兴听到有关如何减少此类简单查询的执行时间的任何建议。如果谷歌的任何人阅读我的问题,如果检查作业,我将不胜感激。

谢谢!

附:以前,我曾在其他项目中使用过 BigQuery,并且对于 50+ TB 大小的表来说,性能和执行时间非常好。

【问题讨论】:

  • 您有多个查询、表和计时。我不知道你在问什么问题。
  • @GordonLinoff 我遇到了查询执行时间长的问题。以多个查询为例,表的大小表明存储和处理的数据量很小。问题是我做错了什么或者如何提高查询性能?谢谢
  • 我更新了问题。希望问题现在更清楚了
  • 对于这些查询,query plan 是什么样的?也许可以更新问题的一些细节?
  • @virtualandy 添加了两个查询的执行计划截图。请检查一下

标签: sql google-cloud-platform google-bigquery


【解决方案1】:

发布我在 gcp 松弛工作区中给出的相同回复:

您的前两个查询看起来都像您有一个超载的特定工作人员。可以看到这一点,因为在计算部分,最大时间与平均时间有很大不同。这可能有多种原因,但我可以看到您正在将 700k+ 行的表(查看第二个输入)连接到一个约 50k 的表(查看第一个输入)。这不是一个好习惯,您应该切换它,以便较大的表是最左边的表。见https://cloud.google.com/bigquery/docs/best-practices-performance-compute?hl=en_US#optimize_your_join_patterns

您的连接键也可能存在严重偏差(例如,90% 的行位于 2020 年 1 月 1 日或 NULL)。检查一下。

对于第三个查询,该时间是预期的,请尝试使用近似计数来加快速度。另请注意,如果您一遍又一遍地执行相同的查询,BQ 会开始变得更好,所以这会变得更快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-15
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    相关资源
    最近更新 更多