Chapter 10. マルチバージョン・コンカレンシー・コントロール

Table of Contents
イントロダクション
トランザクションの隔離
リードコミッティド隔離レベル
シリアライザブル隔離レベル
ロックとテーブル
ロックとインデックス
アプリケーションにおけるデータ整合性のチェック

マルチバージョン・コンカレンシー・コントロール (MVCC-多重バージョン型同時実行制御)は,マルチユーザ環境における データベースの性能を向上させる高度な技術です. Postgres における実装は Vadim Mikheev によって もたらされました.

イントロダクション

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

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