首页 > 解决方案 > update 命令中的临时块使 DISK FULL 红移

问题描述

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

标签: amazon-web-servicesamazon-redshift

解决方案


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

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

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

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

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

一些资源:


推荐阅读