2016-08-22 33 views
0

根据文档,删除postgresql中的行后,它们仍然处于死状态,因此需要定期抽真空来回收这个空间。这是否也适用于从表中删除列时的行宽,还是永远分配的空间?删除列后VACUUM FULL是否缩小行宽?

回答

1

答案是 - 空间被回收。

documentationVACUUM(粗体重点煤矿):

写入的新副本,直到操作完成不释放旧副本

并从页面中的说明约ALTER TABLE

要强制立即回收由被删除的列占用的空间,您可以执行ALTER TABLE的一种形式来执行整个表的重写。这会导致重建每个行,并将删除的列替换为空值。

还有一:

根据参数你可能需要重写表以获得预期的效果。 这可以使用VACUUM FULL,CLUSTER或强制重写表的ALTER TABLE形式之一来完成。