删除列后,VACUUM FULL是否缩小行宽?

时间:2016-08-22 15:20:41

标签: postgresql vacuum

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

1 个答案:

答案 0 :(得分:1)

答案是 - 回收空间。

来自documentation关于VACUUM(大胆强调我的):

  

它会写表的新副本,并且在操作完成之前不会释放旧副本

关于ALTER TABLE

的页面说明
  

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

还有一个:

  

取决于您可能需要重写表格以获得所需效果的参数。 可以使用VACUUM FULL ,CLUSTER或其中一种强制表格重写的ALTER TABLE来完成。