最近,我不得不更改PostgreSQL表上一列的精度。 该表非常大(超过1000万行)。
所以我是通过Rails迁移做到的:
change_column(:my_table, :amount, :decimal, precision: 30, scale: 8, default: 0.0)
转换为此SQL:
ALTER TABLE "my_table" ALTER COLUMN "amount" TYPE decimal(30,8)
除了将数据库挂起15分钟之外,其他都不错。据我了解,迁移期间确实不需要更改任何数据,但是我想PostgreSQL仍在重写行。
有没有办法让PostgreSQL仅在更新行时重写行,而不是在像这样更改列精度时执行大量重写?