FIELD NOTE / 2026.09.124 MIN READ / 5 SOURCES

David Reed and the Origins of Multiversion Concurrency Control

David Reed's 1978 work treated mutable objects as sequences of immutable versions, establishing a key idea behind multiversion concurrency control: readers can select a consistent version instead of competing with every writer for the same current copy.

Concurrency creates a conflict between seeing data and changing it

A multiuser database has to answer a basic question: what should a reader see while another transaction is updating the same logical object? Lock-based systems can protect correctness by forcing some operations to wait, but waiting creates contention and makes long reads expensive.

Multiversion concurrency control approaches the problem differently. Instead of assuming that one current copy must serve every transaction, the system can preserve multiple versions and decide which version each transaction is allowed to observe.

David Reed described mutable objects as sequences of immutable versions in 1978

In his MIT doctoral dissertation, David P. Reed proposed treating a modifiable object as a sequence of immutable versions, each representing the state after an update. Synchronization then becomes partly a problem of naming which version a computation should read and where a new version belongs.[1]

This is one of the clearest early statements of the idea that later became associated with multiversion database concurrency control.

Version choice replaces some mutual exclusion

With only one copy of an object, a reader and writer may need to coordinate access to that same state. With multiple versions, a reader can continue using an earlier committed state while a writer prepares a later one.

The important change is architectural: correctness can be enforced through visibility rules over versions, not only through exclusive access to a single mutable record.

Database researchers turned versioning into concurrency-control algorithms

Philip Bernstein and Nathan Goodman’s 1981 survey organized the rapidly growing field of database concurrency control around read-write and write-write synchronization. Their treatment included multiversion approaches among the family of methods for preserving serializable behavior.[2]

A 1982 paper by Bernstein and Goodman then focused directly on concurrency-control algorithms for multiversion database systems.[3]

MVCC is a family, not one algorithm

There is no single universal MVCC implementation. Systems differ in how they assign timestamps, choose visible versions, detect write conflicts, garbage-collect old versions and define isolation levels.

The shared principle is that logical data can have multiple physical states whose visibility depends on transaction ordering.

Multiversion concurrency became an explicit theory of database correctness

Bernstein and Goodman extended the multiversion line into a formal database theory in 1983. Their ACM Transactions on Database Systems paper defined a multiversion database as one in which writes create new versions and developed correctness criteria for analyzing concurrency-control algorithms over those versions.[5]

That step mattered because versioning was no longer only an implementation intuition. It became a subject that could be compared, proved and classified within the broader theory of serializable database execution.

Readers can stop competing with writers for the same copy

Snapshots change what a read means

PostgreSQL’s documentation gives a modern expression of the benefit: each statement observes a database snapshot, and reading does not block writing in the ordinary MVCC path.[4]

That familiar behavior is the operational consequence of the historical idea. A transaction does not need the globally latest physical version; it needs the version that is correct for its own view of the database.

Versioning shifts complexity rather than eliminating it

Keeping old states has costs. The database must know when a version is no longer visible to any relevant transaction, prevent unsafe write conflicts, and manage storage that can grow if long-running transactions hold old snapshots alive.

MVCC therefore trades some lock contention for bookkeeping about time, identity and visibility.

Isolation semantics still matter

A snapshot can protect a transaction from seeing partial concurrent updates without necessarily reproducing every property of serial execution. Later systems developed different snapshot and serializable isolation schemes on top of multiversion storage.

Versioning is an enabling mechanism, not a substitute for a precise concurrency model.

The idea became central far beyond one database product

Modern relational and distributed systems use many forms of versioned data: transaction snapshots, timestamped records, copy-on-write structures and historical reads. These implementations differ, but they all exploit the same basic possibility that an old state can remain useful after a new state has been created.

Why Reed belongs in database concurrency history

Reed’s contribution was broader than a feature in a specific DBMS. He articulated a way to think about synchronization in which updates create versions rather than simply overwrite a single shared object.[1]

Bernstein and Goodman helped translate that idea into the database concurrency-control literature.[2][3] The result is a lineage that changed the default intuition of multiuser data systems: readers and writers do not always have to fight over the same copy.

RESEARCH / PROVENANCE

Works Cited

5 SOURCES
  1. 01
  2. 02
  3. 03
  4. 04
  5. 05

CodeHistory is a living archive. Citations document the evidence used for this edition; later evidence may refine the account.

Contribute / Corrections

Improve the record.

Use this moderated submission form to suggest a correction, provide a source, challenge a priority claim or identify a missing contributor. Submissions are treated as research leads, not automatically published comments.

Submit a research lead

Please do not submit confidential material or claims you cannot support.