查询失败并出现错误 RESOURCE_EXHAUSTED (ORDER BY without ORDER BY)
Posted
技术标签:
【中文标题】查询失败并出现错误 RESOURCE_EXHAUSTED (ORDER BY without ORDER BY)【英文标题】:Query failed with error RESOURCE_EXHAUSTED (ORDER BY without ORDER BY ) 【发布时间】:2019-06-12 15:17:17 【问题描述】:我有一个下面表格的查询,在一个大表(~60GB)上运行。我认为 WITH OFFSET 是某种 ORDER BY 在引擎盖下?欢迎任何关于如何解决这个问题的想法。
我收到以下错误: 作业 xxx 因错误 RESOURCE_EXHAUSTED 失败:查询执行期间超出资源:无法在分配的内存中执行查询。峰值使用量:限制的 112%。最高内存消费者:ORDER BY 操作:98% 其他/未归因:2%;工作ID:xxx
WITH
test_data AS (
SELECT
CAST(CURRENT_TIMESTAMP() as DATETIME) datetime,
'xyz' AS grp,
'["7f9f98fh9g4ef393d3h5", "chg3g33f26949hg6067d", "g477e5973ec04g7c3232", "0de1ec83304d761he786", "3c1h1f153530g90g35c2", "946637g145h48322686f"]' AS ids
UNION ALL
SELECT
CAST(CURRENT_TIMESTAMP() as DATETIME) datetime,
'abc' AS grp,
'["7f9f98fh9g4ef393d3h5", "chg3g33fdsfsdfs49hg6067d", "g477e5973ec04g7c3232", "0de1ec83304d761he786", "3c1h1f153530g90g35c2", "946637g145h48322686f"]' AS ids ),
as_list AS (
SELECT
datetime,
grp,
id,
pos
FROM
test_data, UNNEST(SPLIT(REGEXP_REPLACE(JSON_EXTRACT(ids,'$'), r'[\[\]\"]', ''), ',')) AS id WITH OFFSET AS pos)
SELECT
*
FROM
as_list
ORDER BY
grp, datetime
【问题讨论】:
示例查询运行良好。您是否有任何实际失败的示例查询?问题中缺少一些东西:为什么需要使用 WITH OFFSET? @FelipeHoffa 我确实需要 with offset 来获取相关元素的位置。上述查询只是一个示例,实际查询运行在更大的数据集(60GB)上。 @F***Bosler - 是在行数方面还是在单个行的大小方面更大? @MikhailBerlyant 就行数而言,几百万行。没有太多的列(40 左右)。这能回答你的问题吗? 实际上我认为我在这里搞砸了,并在查询的最后忽略了一个 ORDER BY。道歉。 【参考方案1】:要解决这个问题,只需删除 ORDER BY 或添加 LIMIT
【讨论】:
以上是关于查询失败并出现错误 RESOURCE_EXHAUSTED (ORDER BY without ORDER BY)的主要内容,如果未能解决你的问题,请参考以下文章
导入数据存储备份时,大查询加载失败并出现错误字符 (ASCII 0)
查询失败并出现错误 RESOURCE_EXHAUSTED (ORDER BY without ORDER BY)
Apollo 查询失败并出现错误 - TypeError: this.props.getPostInfo is not a function