0

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

4

1 回答 1

1

答案是肯定的——空间被回收。

从有关(粗体强调我的)的文档中:VACUUM

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

从关于页面的注释中ALTER TABLE

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

还有一个:

根据参数,您可能需要重写表以获得所需的效果。这可以通过 VACUUM FULL、 CLUSTER 或强制表重写的 ALTER TABLE 形式之一来完成。

于 2016-08-22T15:32:38.933 回答