Redshift的文件说:
ALTER TABLE locks the table for reads and writes until the operation completes.
我的问题是:
假设我有一个包含5亿行的表,我想添加一列。这听起来像一个沉重的操作,可以锁定桌子很长一段时间 - 是吗?或者它实际上是一个快速操作,因为Redshift是一个柱状数据库?或者它取决于列是否为空/具有默认值?
答案 0 :(得分:5)
我发现添加(和删除)列是一个非常快速的操作,即使在具有数十亿行的表上,无论是否存在默认值,或者它只是NULL。
正如您所建议的那样,我相信这是一个柱状数据库的特性,因此表的其余部分不受干扰。它只是为每个节点上的新列创建空(或几乎为空)列块。
答案 1 :(得分:3)
我最近在Redshift中添加了一个默认为大约65M行的表的整数列,并且需要大约一秒的时间来处理。这是在dw2.large(SSD类型)单节点集群上。
请记住,您只能在表的末尾(右侧)添加一列,如果要在中间的某处插入一列,则必须使用临时表等。
答案 2 :(得分:1)
我个人认为重建桌面效果最好。 我是按照以下方式做的
这是一个更快的过程。不阻止任何表,并且你总是有旧表的备份,以防出现任何问题