【问题标题】:Temporary blocks in update command making DISK FULL redshiftupdate 命令中的临时块使 DISK FULL 红移
【发布时间】:2019-04-04 17:49:37
【问题描述】:

我是 redshift 的新手,正在努力更新 redshift 表中的列。我有一个巨大的数据表,并在其中添加了一个空列。我试图通过使用更新命令将它与另一个表连接来填充这个空列。我担心的是,即使还剩下 291 GB 的空间,这个 UPDATE 语句创建的临时块也会产生 DISK FULL 错误。任何解决方案或建议表示赞赏。提前致谢!

【问题讨论】:

    标签: amazon-web-services amazon-redshift


    【解决方案1】:

    不建议在 Amazon Redshift 表中执行大型 UPDATE 命令。

    原因是即使只更新一行中的一列也会导致以下情况:

    • 现有行将被标记为已删除,但仍会占用磁盘空间,直到表被 VACUUMed
    • 一个新行被添加到表存储的末尾,然后它没有排序

    如果您要更新表中的每一行,这意味着表所需的存储量是原来的两倍,可能更多是因为压缩效率较低。这可能是占用您的磁盘空间的原因。

    建议的替代方法是将连接的数据选择到新表中。是的,这也需要更多的磁盘空间,但组织起来会更有效率。然后您可以删除原始表并将新表重命名为旧表名。

    一些资源:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-18
      • 2018-06-28
      • 1970-01-01
      • 2021-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-02
      相关资源
      最近更新 更多