応用情報​技術者試験 令和7年度 秋期 午前、全80問のうちの問29。

出典:令和7年度 秋期 応用情報技術者試験 午前 問29

RDBMS において,同じデータ項目の異なる版を用意することによって,トランザクションの同時実行性を高める仕組みはどれか。

  1. ア2 相ロッキングプロトコル
  2. イMVCC
  3. ウWAL プロトコル
  4. エ共有ロック
答えと解説を開く

正解はイです。

MVCC (多版同時実行制御) は、データを書き換えるときに元の値を消さず、新しい版を別に作ります。ほかのトランザクションが同じデータを読むときは、まだ確定していない新しい版ではなく、読み始めた時点で確定していた版を見せます。読む側は書き込みの終わりを待たず、書く側も読む側を待たずに済むので、同時に多くのトランザクションを動かせます。問題文の説明に合うのはイです。

ほかの選択肢が違う理由

  • ア2 相ロッキングは、ロックを取る段階と外す段階を分けることで、トランザクションの結果を正しく保つ方法です。データの版を複数持つ仕組みではありません。
  • ウWAL (ログ先行書込み) は、データを書き換える前に変更の記録をログに書いておき、障害のあとで回復できるようにする方法です。
  • エ共有ロックは、読む間ほかの人に書かせないためのロックです。読みと書きは待ち合うことになり、版を分ける仕組みではありません。

仕組み

ロックだけで守ると、誰かが書いている間は読む人が待たされ、逆に読んでいる間は書けません。人の多いシステムでは、この待ちが性能の壁になります。

PostgreSQL や MySQL の InnoDB は MVCC を使っています。古い版は、それを見ているトランザクションがいなくなった時点で片付けられます。

この問に出る言葉