根据文档,删除postgresql中的行后,它们仍然处于死状态,因此需要定期抽真空来回收这个空间。从表中删除列时这是否也适用于行宽,或者该空间是否永远分配?
答案 0 :(得分:1)
答案是是 - 回收空间。
来自documentation关于VACUUM
(大胆强调我的):
它会写表的新副本,并且在操作完成之前不会释放旧副本
关于ALTER TABLE
:
要强制立即回收已删除列占用的空间,可以执行ALTER TABLE的一种形式,以执行整个表的重写。这导致重建每一行,并将删除的列替换为空值。
还有一个:
取决于您可能需要重写表格以获得所需效果的参数。 可以使用VACUUM FULL ,CLUSTER或其中一种强制表格重写的ALTER TABLE来完成。