Chapter 9. マルチバージョン・コンカレンシー・コントロール (MVCC)

Table of Contents
9.1. はじめに
9.2. トランザクションの隔離
9.3. Read Committed(コミットされた読み込み)隔離レベル
9.4. シリアライザブル隔離レベル
9.5. アプリケーションレベルでのデータの一貫性チェック
9.6. ロックとテーブル
9.7. ロックとインデックス

MVCC(多版型同時実行制御)とは、マルチユーザ環境における データベースの性能を向上させる高度な技術です。 Postgresのために、 Vadim Mikheev ()氏が実装したものを 貢献してくださいました。

9.1. はじめに

ロック機構を同時実行制御に使用する多くのデータベースシステムとは異なり、 Postgresではデータ整合性の維持にマルチ バージョン方式を使用しています。つまり個々のトランザクションは データベースへの問い合わせ実行の間、処理の基礎となるデータの 現在の状態には関知せず、現在から遡ったある時点に おけるスナップショット(データベースバージョン)を参照する、というものです。 これは、並行するトランザクション同士が同じ行を更新することによって 引き起こる整合性を欠いたデータの参照からトランザクションを保護し、 個々のデータベースセッションに対してトランザクションの隔離 を提供するものです。

多重バージョン方式とロック方式との最大の相違点は、MVCCでは問い合わせ(読み込み) ロックの獲得と、書き込みロックの獲得が競合しないことです。したがって 読み込みは書き込みを絶対にブロックしませんし、書き込みも読み込みをブロック することがありません。