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.
|