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では問い合わせ(読み込み) ロックの獲得と、書き込みロックの獲得が競合しないことです。したがって、 読み込みは書き込みを絶対にブロックしませんし、書き込みも読み込みをブロックすることがありません。