Amazon redshift 在大型数据集上使用addcolumn的含义
红移的文件说:Amazon redshift 在大型数据集上使用addcolumn的含义,amazon-redshift,Amazon Redshift,红移的文件说: ALTER TABLE locks the table for reads and writes until the operation completes. 我的问题是: 假设我有一个有5亿行的表,我想添加一列。这听起来像是一个沉重的操作,可能会锁定桌子很长时间-是吗?或者它实际上是一个快速操作,因为红移是一个柱状db?或者这取决于列是否可以为空/是否具有默认值?最近,我在一个大约6500万行的表中添加了一个带有默认值的整数列,并用了大约一秒钟的时间进行处理。这是在dw2.5
ALTER TABLE locks the table for reads and writes until the operation completes.
我的问题是:假设我有一个有5亿行的表,我想添加一列。这听起来像是一个沉重的操作,可能会锁定桌子很长时间-是吗?或者它实际上是一个快速操作,因为红移是一个柱状db?或者这取决于列是否可以为空/是否具有默认值?最近,我在一个大约6500万行的表中添加了一个带有默认值的整数列,并用了大约一秒钟的时间进行处理。这是在dw2.5大型(SSD类型)单节点群集上 <>请记住,您只能在表的末尾(右)添加一个列,如果要在中间插入某个列,就必须使用临时表等。 ,我发现添加(和删除)列是一个非常快的操作,即使是在数十亿行的表上,不管是默认值还是空值
正如您所建议的,我相信这是它的一个特性,因为它是一个列数据库,所以表的其余部分不受干扰。它只是为每个节点上的新列创建空(或几乎空)列块。就我个人而言,重建表效果最好。 我用以下方法做这件事