MVCCスナップショット
多版型同時実行制御(MVCC)のもとで、トランザクションが見る一貫したデータベースの「スナップショット」。各行について、スナップショット取得時点で有効だったバージョンを読むので、読み取りと書き込みが互いをブロックしない。
仕組みはこうだ。読み取り時に行をロックする代わりに、各行の複数バージョンを保持する。トランザクション(または文)の開始時に、その時点でコミット済みだった他のトランザクションを定義するスナップショットが渡される。読み取りはスナップショットに含まれるトランザクションのバージョンだけを見るため、他者が書き込み中でも安定した一貫ビューが得られる。PostgreSQLは古いバージョンをテーブル内に残し(VACUUMで掃除する)、InnoDBはundoログから再構築する。利点は高い同時実行性、つまり「読み取りが書き込みをブロックしない」ことだ。Repeatable Readやスナップショット分離といった分離レベルを可能にしているのもこれで、現代のトランザクション並行制御の土台である。undoログやシリアライズ失敗とも関連する。