|< < 30 > >|

Postgres MVCC

Row versions

An MVCC implementation has to manage versions of rows.

  • Don't update in place: When updating a row, keep the old version and create a new one.

  • Where do the versions go? Update in place? Then where does the old version go? If not, then where does the new version go?

  • Determine visibility: Which version of a row should be seen by a given transaction?

  • Cleanup: When is a row version obsolete? How are obsolete versions deleted?

  • Indexes: All the above applies to the sequential file, and to indexes also.

We are going to examine the Postgres implementation of MVCC.

Oracle's is quite different.

|< < 30 > >|