我需要在 200 万行 Postgres 表上执行两次迁移,并且需要确保每次运行时停机时间最短,即少于 5 秒。
迁移是:
1) 添加默认值 0 并从 null 更改为非 null 到现有bigint 列
2)重命名列
注意:我发现很多帖子都说向大表添加具有默认值的新列会导致锁定,但不会向现有列添加默认值。
这些会锁定桌子吗?
我们知道默认值仅适用于后续的 INSERT 命令;它们不会导致表中已有的行发生变化。这意味着在将默认值设置为现有列时不会锁定表
请参阅https://www.postgresql.org/docs/9.1/static/sql-altertable.html的SET/DROP DEFAULT部分
您也可以参考这篇文章了解大容量 PostgreSql 的安全操作。
| 归档时间: |
|
| 查看次数: |
4816 次 |
| 最近记录: |