2017-06-28 29 views
2

我已經運行一個完整的真空Postgres的表900萬行,我這回:Postgres的真空輸出中的可移動性意味着什麼?

INFO: vacuuming "osm.asp_trs_roads_osm" 
INFO: "asp_trs_roads": found 329992 removable, 9660438 nonremovable row versions in 761738 pages 

詳細信息:0死行版本還不能去除。 CPU 8.98s/13.06u秒經過549.77秒 查詢成功返回,結果爲991788毫秒。

「329992可拆卸」是什麼意思?爲什麼我得到:

0 dead row versions cannot be removed yet. 

我的表索引,並有主鍵,但執行的查詢上是非常緩慢的。

回答

2

由於我對更改行(更新,刪除)的知識不多,所以如果其他事務處於使用狀態(在相同的物理位置),則保留舊版本,當沒有更多事務需要過時版本的該行 - 它變得可移動。

對不起 - 無法找到文檔

如果我得到正確清晰的描述 - 可移動通過真空的analyze部分所示,和死行刪除,而不是由實際vacuum部分所示。

2

除了別人已經回答了,對此輸出日誌:

0 dead row versions cannot be removed yet.

當在任何行上執行updatedelete,則創建該行的新版本以便在交易爲com時替換先前的版本mitted。在執行更新/刪除之前啓動的事務可能會繼續看到舊行版本(具體取決於transaction isolation級別)。因此,真空不能刪除這些版本,直到可以確保它們中的任何一個都不再可見。

有關這些情況的日誌報告:在您的示例中,沒有行版本無法刪除,因爲它們可能會被其他事務訪問。

看到這個related question

相關問題