平成31年度 春期 午前Ⅱ 問18
トランザクション処理
多版同時実行制御に関する問題
DBMSの多版同時実行制御(MVCC)に関する記述として,適切なものはどれか。
- ア同時実行される二つのトランザクションのうち,先発のトランザクションがデータを更新し,コミットする前に,後発のトランザクションが同じデータを参照すると,更新前の値を返す。
- イトランザクションがデータを更新する前に専有ロックを,参照する前に共有ロックを掛け,コミットかロールバック後に全てアンロックする。
- ウトランザクションがデータを更新する前に専有ロックを,参照する前に共有ロックを掛け,専有ロックはコミットかロールバック後までアンロックしないが,共有ロックは不必要になったらアンロックする。
- エトランザクションがデータを更新する前にロックを掛けず,コミット直前に他のトランザクションがそのデータを更新したかどうか確認し,更新していないときだけコミットする。
答えと解説を見る
✓ これが正解ア同時実行される二つのトランザクションのうち,先発のトランザクションがデータを更新し,コミットする前に,後発のトランザクションが同じデータを参照すると,更新前の値を返す。
解説
更新中のデータを読むと、MVCCは更新前の版の値を返します。
多版同時実行制御(MVCC)は、データを更新するときに更新前の値を版として残しておく方式です。あるトランザクションが更新してまだコミットしていない間に、別のトランザクションが同じデータを読みに来ると、待たせるのではなく、残してある更新前の版を返します。このため、読む側が書く側のロックの解除を待たずに済み、同時に実行できる度合いが高まります。先発が更新してコミットする前に後発が参照すると更新前の値を返す、という記述はこの動きそのものです。版を複数持ち、読む側には確定済みの版を見せる、と押さえておくと、ロックを使う方式の説明と区別できます。
ほかの選択肢はなぜ違うのか
- イトランザクションがデータを更新する前に専…:更新前に専有ロック、参照前に共有ロックを掛け、コミットかロールバックのあとにまとめて外す方式は、ロックによる同時実行制御の説明です。データの版を残して読む側に見せる仕組みは含まれていません。
- ウトランザクションがデータを更新する前に専…:共有ロックだけを不要になった時点で外す方式も、ロックを使った同時実行制御の一つの形です。参照のたびにロックを掛けるので、更新前の版を読ませて待たずに済ませるMVCCの仕組みとは違います。
- エトランザクションがデータを更新する前にロ…:ロックを掛けずに処理を進め、コミットの直前に他のトランザクションとの競合を確かめる方式は、競合はまれだと見込んで最後にまとめて検査する考え方です。データの版を複数持って読む側に古い版を返す仕組みとは別物です。
この問題の用語
- DBMSデータベースを管理するソフト。複数の処理が同じデータを同時に更新しても矛盾しないよう、排他制御などを行います。
- トランザクションデータベースへの一連の処理をひとまとめにした単位のこと。途中で失敗すると開始前の状態へ戻され、中途半端な更新が残りません。
出典:平成31年度 春期 データベーススペシャリスト試験 午前Ⅱ 問18
同じ用語が出る問題
- 令和7年度 秋期 午前Ⅱ 問18:ブロックチェーンに関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問17:デッドロックに関する問題(DBMS)
- 令和7年度 秋期 午前Ⅱ 問16(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問12:ロールフォワードに関する問題(DBMS)
- 令和7年度 秋期 午前Ⅱ 問2:概念データモデルの説明(DBMS)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)