DBデータベーススペシャリスト試験 午前Ⅱ

平成31年度春期 データベーススペシャリスト 午前Ⅱ 問18

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

DBMSの多版同時実行制御(MVCC)に関する記述として,適切なものはどれか。

選択肢

  1. ア
    同時実行される二つのトランザクションのうち,先発のトランザクションがデータを更新し,コミットする前に,後発のトランザクションが同じデータを参照すると,更新前の値を返す。
  2. イ
    トランザクションがデータを更新する前に専有ロックを,参照する前に共有ロックを掛け,コミットかロールバック後に全てアンロックする。
  3. ウ
    トランザクションがデータを更新する前に専有ロックを,参照する前に共有ロックを掛け,専有ロックはコミットかロールバック後までアンロックしないが,共有ロックは不必要になったらアンロックする。
  4. エ
    トランザクションがデータを更新する前にロックを掛けず,コミット直前に他のトランザクションがそのデータを更新したかどうか確認し,更新していないときだけコミットする。
解き方のヒントを見る

多版同時実行制御を考える視点

複数の処理が同じデータを扱う場面では、同時実行による見え方と、処理の順序や独立性をどう捉えるかに注目し、用語の印象ではなく一貫性との関係を丁寧に整理しましょう。

この問題で問われていること

確認の中心は、複数処理が並行して進むときに、各処理から見えるデータの状態と処理間の影響をどの観点で説明しているかです。具体例は画面の記述に照らして考えます。

視点

この分野では、処理が重なる状況を時間の流れに沿って捉え、データの見え方、処理どうしの関係、結果の整合性を分けて考えると整理しやすくなります。

確認ポイント

  • 処理の開始・実行・完了の順序に注目する
  • 各処理が参照する状態を区別して整理する
  • 説明が整合性や処理間の影響に触れているか確認する
正解と解説を見る

正解

ア

解説

MVCCはデータを複数の版で管理し、あるトランザクションが更新を完了していない場合でも、別のトランザクションが読み取り可能な版を参照できるようにする。同時実行制御の方式を、ロックの取得・解放やコミット直前の検証と区別して理解する。

理由

MVCCでは、更新前後のデータを複数の版として管理し、読み取り側のトランザクションに適切な版を返す。更新側のコミット完了を待たずに参照できる点が、ロック中心の制御との大きな違いです。

比較

イとウは共有ロックや専有ロックの取得・解放規則を説明しており、ロック方式の特徴です。エはコミット直前に競合を確認する楽観的な方式に近く、MVCCの版を参照する説明にはなっていない。

選択肢ア(正解)

これは正解だよ。MVCCでは、更新前のデータを残した別バージョンを管理し、更新トランザクションがコミットする前でも、後発のトランザクションが読み取り時点に対応する更新前の版を参照できる。この説明はMVCCの基本的な動作に合っている。

選択肢イ

これは不正解だよ。更新前に専有ロック、参照前に共有ロックを取得し、コミットまたはロールバック後に全て解放するという説明は、ロックを中心とした同時実行制御の手順である。MVCCの特徴である複数のデータ版による読み取りを説明していない。

選択肢ウ

これは不正解だよ。専有ロックを終了時まで保持し、共有ロックを不要になった時点で解放するという規則は、ロックの保持期間に関する制御である。MVCCはこの共有ロックの取得・解放規則を基本として更新前の版を参照する方式ではない。

選択肢エ

これは不正解だよ。ロックを取得せず、コミット直前に他トランザクションの更新有無を確認して、更新がなければコミットするという説明は、競合を後から検証する楽観的な制御に該当する。データの複数版を利用するMVCCの説明ではない。

学習のポイント

MVCCの版管理と、ロック方式・楽観的同時実行制御との違いを整理する。

出典:独立行政法人 情報処理推進機構(IPA)平成31年度春期 データベーススペシャリスト試験 午前Ⅱ 問18(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針