2016-08-22 36 views
0

根據文檔,刪除postgresql中的行後,它們仍然處於死狀態,因此需要定期抽真空來回收這個空間。這是否也適用於從表中刪除列時的行寬,還是永遠分配的空間?刪除列後VACUUM FULL是否縮小行寬?

回答

1

答案是 - 空間被回收。

documentationVACUUM(粗體重點煤礦):

寫入的新副本,直到操作完成不釋放舊副本

並從頁面中的說明約ALTER TABLE

要強制立即回收由被刪除的列佔用的空間,您可以執行ALTER TABLE的一種形式來執行整個表的重寫。這會導致重建每個行,並將刪除的列替換爲空值。

還有一:

根據參數你可能需要重寫表以獲得預期的效果。 這可以使用VACUUM FULL,CLUSTER或強制重寫表的ALTER TABLE形式之一來完成。