有没有一种方法可以在巨大的 table 上在 postgres 12 中执行 ALTER Column 而无需等待一生?
Is there a method to do an ALTER Column in postgres 12 on an huge table without waiting a lifetime?
有没有一种方法可以在巨大的 table 上在 postgres 12 中执行 ALTER COLUMN 而无需等待一生?
我尝试将字段从 bigint 转换为 smallint :
ALTER TABLE huge ALTER COLUMN result_code TYPE SMALLINT;
需要28个小时,有没有更聪明的方法?
table 有序列、键和外键
table要重写,还得等
如果要更改多个列的数据类型,可以在单个 ALTER TABLE
语句中使用多个 ALTER COLUMN
子句,这样可以节省时间。
另一种想法是使用逻辑复制:设置数据库的空副本 (pg_dump -s
),其中您的大 table 是用 smallint
列定义的。将您的数据库复制到该数据库,并在复制完成后立即切换。
有没有一种方法可以在巨大的 table 上在 postgres 12 中执行 ALTER COLUMN 而无需等待一生?
我尝试将字段从 bigint 转换为 smallint :
ALTER TABLE huge ALTER COLUMN result_code TYPE SMALLINT;
需要28个小时,有没有更聪明的方法? table 有序列、键和外键
table要重写,还得等
如果要更改多个列的数据类型,可以在单个 ALTER TABLE
语句中使用多个 ALTER COLUMN
子句,这样可以节省时间。
另一种想法是使用逻辑复制:设置数据库的空副本 (pg_dump -s
),其中您的大 table 是用 smallint
列定义的。将您的数据库复制到该数据库,并在复制完成后立即切换。