更新命令中的临时块使DISK FULL红移

时间:2018-10-31 14:14:34

标签: amazon-web-services amazon-redshift

我是Redshift的新手,正在努力更新Redshift表中的列。我有一个巨大的数据表,并向其中添加了一个空列。我正在尝试通过使用update命令将其与另一个表联接来填充此空列。我担心的是,即使还有291 GB的空间,由此UPDATE语句创建的临时块也会产生DISK FULL错误。任何解决方案或建议表示赞赏。预先感谢!

1 个答案:

答案 0 :(得分:0)

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

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

  • 现有行将被标记为 Deleted ,但在对该表进行VACUUMed之前仍会占用磁盘空间
  • 新的行被添加到表存储的末尾,然后这是乱序的

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

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

一些资源: