【问题标题】:Out of Memory error while creating table but SELECT works创建表时出现内存不足错误,但 SELECT 有效
【发布时间】: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 行。但是,我发现在一个表的顺序扫描中 返回的字节数 存在巨大差异。

选择


将表创建为 SELECT


我不明白为什么这两种情况之间存在如此大的差异,以及可以采取哪些措施来缓解这种差异。我也尝试创建一个TEMP TABLE,但这也会导致内存错误。

我不太擅长理解查询计划(从来没有找到关于 Redshift 的详细指南,所以如果你能链接到一些资源,那将是一个奖励)。

更新:还尝试先创建表,然后使用 SELECT 插入数据,这也给出了相同的错误。

更新 2:尝试了 set wlm_query_slot_count to 40; 甚至 50,但仍然是同样的错误。

【问题讨论】:

  • 您已经为 AWS 支持开过票了吗?我们做到了,希望我们能很快得到答案。几天前 Redshift 有一个维护更新,这可能是相关的。同时,如果您选择较少的列,您可以使其工作。我不知道你能做到什么程度,但值得一试。
  • @anteverse 看来我正在使用基本支持计划,所以如果您能在此处更新您的发现,那就太好了,它真的会帮助我理解这个奇怪的问题。谢谢
  • Redshift 团队几天后发布了更新,经过一段时间的监控,对我们来说似乎好多了。你有什么变化吗?
  • @anteverse 我为此查询采用了一种解决方法,并且效果很好。我将尝试原始查询并返回。

标签: sql amazon-redshift


【解决方案1】:

在我们的集群更新到最新版本 (1.0.10694) 后,我们遇到了类似的问题。

有两个帮助:

我们怀疑 AWS 可能在最近的更新中改变了内存管理方面的一些东西。收到回复后我会更新。

【讨论】:

  • 嘿,谢谢你的回答,我正在使用自动 WLM,实际上尝试将 wlm_query_slot_count 设置为从 4-5 到 40-50,但它仍然没有工作。
【解决方案2】:

作为一种解决方法,您可以尝试分批插入记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 2013-03-28
    • 2014-05-10
    • 1970-01-01
    相关资源
    最近更新 更多