gpt4 book ai didi

postgresql - ALTER TABLE 在有限的磁盘空间上添加新列

转载 作者:行者123 更新时间:2023-11-29 12:59:44 27 4
gpt4 key购买 nike

我有一个关于操作我的主表的问题:我需要在其中添加一个新列,但是已经有超过 5000 万个条目要更新。
如果我不将我的数据存储在已经被数据库填充了一半以上的小型 ssd 上,它就像更改表一样简单。
更改表无法完成,因为它创建了表的副本,然后才替换原始表。

我的 ssd 驱动器无法容纳两个副本,那么是否可以直接在原始表上操作,或者使用另一个驱动器作为临时表?或者我应该使用另一台计算机在更大的驱动器上更改我的表,然后只传输回我的 ssd 服务器?

提前致谢!

PS:时间不是真正的问题,它是一个几乎没有用户的 alpha 非实时系统,所以我可以在几个小时内记下所有内容(感谢互联网之神!)

最佳答案

如果列没有 DEFAULT 并且为空,则 PostgreSQL 可以就地执行 ADD COLUMN

因此:使用与在高并发情况下处理它时使用的方法相同的方法,但不使用在并发情况下处理它时使用的触发器。

  • ALTER TABLE ... ADD COLUMN ... 没有任何 DEFAULTNOT NULL
  • ALTER TABLE ... ALTER COLUMN ... DEFAULT ... 添加 DEFAULT(如果有的话)
  • UPDATE 对表中的行批量设置值。 VACUUM 每批之间的表。不要使用VACUUM FULL。每个批处理必须是一个新的、单独的事务,在 VACUUM 之前提交。
  • 如果需要,ALTER TABLE ... ALTER COLUMN ... NOT NULL 在所有行都设置了值之后

关于postgresql - ALTER TABLE 在有限的磁盘空间上添加新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33768823/

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