他のバージョンの文書 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

Chapter 9. MVCC(多版型同時実行制御)

Table of Contents
9.1. はじめに
9.2. トランザクションの隔離
9.3. リードコミッティド隔離レベル
9.4. シリアライザブル隔離レベル
9.5. アプリケーションレベルでのデータの一貫性チェック
9.6. ロックとテーブル
9.6.1. テーブルレベルロック
9.6.2. 行レベルロック
9.7. ロックとインデックス

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

9.1. はじめに

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

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