Postgresql

標記 MVCC 的 UPDATE 優化

  • October 13, 2017

我們有一個包含 200k 行的表,我們每天在其中多次更改一些標誌。如果我理解正確,postgres 上的 UPDATE 是磁碟上的 DELETE+INSERT。

我想知道這對於我們的案例是否效率很低。如果每個元組的大小都很大怎麼辦?整個元組又寫了嗎?

我正在考慮將這些狀態標誌移動到一個單獨的表上,以便我們只重寫小元組來減少無用的 i/o。這是正確的方法還是我走錯了路?

社區維基回答

你基本上是對的。

如果您使用一定數量的可用空間定義單獨的表(請參閱fillfactor參考資料),這也會有所幫助,以便 PostgreSQL 可以執行僅堆元組更新。

請參閱Anvesh Patel的使用 HOT UPDATE(僅堆元組)提高 UPDATE 查詢的速度。

引用自:https://dba.stackexchange.com/questions/180301