【发布时间】:2020-02-20 12:10:34
【问题描述】:
我正在尝试使用CREATE TABLE AS 创建一个表,但出现以下错误:
[Amazon](500310) Invalid operation: Out Of Memory:
Details:
-----------------------------------------------
error: Out Of Memory:
code: 1004
context: alloc(524288,MtPool)
query: 6041453
location: alloc.cpp:405
process: query2_98_6041453 [pid=8414]
-----------------------------------------------;
每次执行查询时都会收到此错误,但只执行查询的SELECT 部分(没有CREATE TABLE AS)可以正常工作。结果有大约 38k 行。但是,我发现在一个表的顺序扫描中 返回的字节数 存在巨大差异。
选择
我不明白为什么这两种情况之间存在如此大的差异,以及可以采取哪些措施来缓解这种差异。我也尝试创建一个TEMP TABLE,但这也会导致内存错误。
我不太擅长理解查询计划(从来没有找到关于 Redshift 的详细指南,所以如果你能链接到一些资源,那将是一个奖励)。
更新:还尝试先创建表,然后使用 SELECT 插入数据,这也给出了相同的错误。
更新 2:尝试了 set wlm_query_slot_count to 40; 甚至 50,但仍然是同样的错误。
【问题讨论】:
-
您已经为 AWS 支持开过票了吗?我们做到了,希望我们能很快得到答案。几天前 Redshift 有一个维护更新,这可能是相关的。同时,如果您选择较少的列,您可以使其工作。我不知道你能做到什么程度,但值得一试。
-
@anteverse 看来我正在使用基本支持计划,所以如果您能在此处更新您的发现,那就太好了,它真的会帮助我理解这个奇怪的问题。谢谢
-
Redshift 团队几天后发布了更新,经过一段时间的监控,对我们来说似乎好多了。你有什么变化吗?
-
@anteverse 我为此查询采用了一种解决方法,并且效果很好。我将尝试原始查询并返回。
标签: sql amazon-redshift