ホーム > データベーススペシャリスト試験 > 2019年

データベーススペシャリスト試験 2019年 午前218


DBMSの多版同時実行制御(MVCC)に関する記述として, 適切なものはどれか。
同時実行される二つのトランザクションのうち, 先発のトランザクションがデータを更新し, コミットする前に, 後発のトランザクションが同じデータを参照すると, 更新前の値を返す。(正解)
トランザクションがデータを更新する前に専有ロックを, 参照する前に共有ロックを掛け, コミットかロールバック後に全てアンロックする。
トランザクションがデータを更新する前に専有ロックを, 参照する前に共有ロックを掛け, 専有ロックはコミットかロールバック後までアンロックしないが, 共有ロックは不必要になったらアンロックする。
トランザクションがデータを更新する前にロックを掛けず, コミット直前に他のトランザクションがそのデータを更新したかどうか確認し, 更新していないときだけコミットする。

解説

多版同時実行制御(MVCC: Multi-Version Concurrency Control)についての解説

MVCCの基本的な考え方

MVCCは、データベース管理システム(DBMS)において、同時に複数のトランザクションがデータにアクセスしても整合性を保ちつつ、高い並行性を実現する手法です。
従来のロックベースの制御方法と異なり、ロックをかける代わりに、データの複数のバージョン(多版)を保持し、各トランザクションが「見える」バージョンを切り替えることで整合性を保ちます

選択肢「ア」が正しい理由

ア: 同時実行される二つのトランザクションのうち, 先発のトランザクションがデータを更新し, コミットする前に, 後発のトランザクションが同じデータを参照すると, 更新前の値を返す。
これはMVCCの本質をよく表しています。
  • 先に開始したトランザクション(先発)はデータを更新しても、コミットするまでその更新のバージョンは確定しません
  • 後から開始したトランザクション(後発)が更新中のデータを参照した場合、先発の「未コミット」データは見えないため、更新前の安定したバージョン(前の値)を返すことになります。
この仕組みにより、**読み取り一貫性(読み取り視点の一貫性)**が保たれ、トランザクション間での不整合な読み取りを防止しています。

他の選択肢の問題点

  • イ, ウ: これはロックベースの同時実行制御に関する記述です。
    MVCCはロックではなく「バージョン管理」によって制御を行うため、これらの選択肢はMVCCの特徴を表していません。
  • エ: これは楽観的同時実行制御に近い手法の説明ですが、MVCCの基本的な動作ではありません。

MVCCの動作イメージ

  1. トランザクション開始時点でタイムスタンプ(またはトランザクションID)を取得。
  2. データ更新時は新しいバージョンの行を作成し、古いバージョンも保持。
  3. 参照時には、トランザクションの開始時点より新しいバージョンは見えず、その時点で有効な最新のバージョンを読み取る。
  4. コミットすると、その更新バージョンが正式な最新状態となる。

まとめ

  • MVCCでは更新中(未コミット)のデータは他トランザクションからは見えず、古いバージョンが参照される。
  • これにより読み取り処理がロックにブロックされず高効率。
  • よって、選択肢アの記述がMVCCの特徴を正しく説明しています。

以上の理由から、正しい答えは です。
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ