2010-01-24 63 views

回答

28

使用MVCC隔離彼此事務的數據庫需要定期掃描表以刪除過時的行副本。在MVCC中,當一行被更新或刪除時,它不能被立即回收,因爲可能有活動的事務仍然可以看到該行的舊版本。而不是檢查是否是這種情況,這可能是相當昂貴的,舊行被假定保持相關。回收空間的過程被推遲到表被抽真空爲止,這取決於數據庫,可以自動或明確地啓動。

0

這與碎片整理文件系統非常相似。更多關於PGSQL docs的信息。

+2

碎片整理不是回收空間。這是關於重新排序數據以減少碎片。 – 2010-01-24 19:29:23

1

'vacuumdb'位於MySQL,sqlite和PostgreSQL中。在Postgres中,vacuumdb標識被刪除的行佔據的空間並將其編目以供將來使用。 'vacuum full'進行更全面的檢查,並將記錄移入新創建的空間。