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

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

2) Multi-Version Concurrency Control (MVCC) is an advanced technique for improving database performance in a multi-user environment. Vadim Mikheev provided the implementation for Postgres.

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

イントロダクション

4) Unlike most other database systems which use locks for concurrency control, Postgres maintains data consistency by using a multiversion model. This means that while querying a database each transaction sees a snapshot of data (a database version) as it was some time ago, regardless of the current state of the underlying data. This protects the transaction from viewing inconsistent data that could be caused by (other) concurrent transaction updates on the same data rows, providing transaction isolation for each database session.

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

5) The main difference between multiversion and lock models is that in MVCC locks acquired for querying (reading) data don't conflict with locks acquired for writing data and so reading never blocks writing and writing never blocks reading.

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