MVCC(多版同時実行制御)
データベースが同じ行の複数バージョンを保持し、読み取りが書き込みを、書き込みが読み取りをブロックしないようにする方式。
各トランザクションはトランザクション ID に基づくスナップショットを受け取り、開始時点でコミット済みだったバージョンだけを参照する。書き込みは新しいバージョンを作り、古いものは後で掃除される(Postgres では VACUUM、Oracle / MySQL InnoDB では undo ログ)。
Postgres、Oracle、MySQL InnoDB、SQL Server(スナップショットモード)、SQLite(WAL モード)、Spanner の既定の方式である。代償は、ディスクとメモリの増加、定期的なガベージコレクション、そしてスナップショット分離のもとでは「書き込みスキュー」が依然として起こりうることだ。