gpt4 book ai didi

postgresql - 将默认值添加到现有列或重命名列锁定 Postgres 表吗?

转载 作者:行者123 更新时间:2023-11-29 12:32:21 25 4
gpt4 key购买 nike

我需要在 200 万行的 Postgres 表上执行两次迁移,并且需要确保每次运行时的停机时间最短,即少于 5 秒。

迁移是:

1) 添加默认值 0 并从 null 更改为非 null 到 existing bigint 列

2) 重命名列

注意:我发现很多帖子都说将具有默认值的新列添加到大表会导致锁定,但不是关于将默认值添加到现有列。

这些会把 table 锁起来吗?

最佳答案

The documentation详细描述了 ALTER TABLE 的哪个变体将占用哪个锁。

SET DEFAULT , SET NOT NULLRENAME COLUMN都拿ACCESS EXCLUSIVE锁。

这很不方便,但通常只有在 ALTER TABLE声明需要很长时间。两者 SET DEFAULTRENAME COLUMN很快,但是 SET NOT NULL将必须扫描表以确定是否满足条件。

关于postgresql - 将默认值添加到现有列或重命名列锁定 Postgres 表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49250796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com