【发布时间】: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