SkillStack
テクノロジ系14 / 25問

データベーススペシャリスト試験 令和6年度 秋期 午前II 問14

トランザクションPが資源Xの値を4から5に更新した後にトランザクションQが開始し、Pがコミットする前にQが資源Xを参照しようとした。Qの挙動のa、bに入れる字句の組みはどれか。ただし、隔離性水準はREAD COMMITTEDとする。 〔Qの挙動〕 同時実行制御が単版2相ロッキングプロトコルの場合Qは「a」、多版同時実行制御(MVCC)の場合Qは「b」。

選択肢を押すと答え合わせができます。

正解と解説を見る

【正解】ア

READ COMMITTEDでは、他のトランザクションがコミットしていない更新結果を読み取るダーティリードは許されません。単版2相ロッキングでは、資源Xについて基本的に一つの値を管理し、Pは更新したXに排他ロックを保持します。Qはその間Xを読み取れないので、Pのコミットとロック解放まで待機し、その後、確定した値5を読み取ります。一方、MVCCでは更新前後の複数の版を保持します。QはPの完了を待たず、読取り時点でコミット済みの最新版である更新前の値4を読み取れます。よってアが正解です。

イは誤りです。単版方式の説明は正しいものの、MVCCでもPの値5は未コミットなので、READ COMMITTEDのQからは参照できません。

ウは誤りです。単版2相ロッキングではPの排他ロックとQの読取り用ロックが競合するため、Qは待機します。また、MVCCで読み取るのは未コミットの5ではなく、コミット済みの4です。

エは誤りです。MVCCの説明は正しいものの、単版2相ロッキングでQが待たずに値5を読むとダーティリードになるためです。

【ポイント】 単版2相ロッキングでは、更新中のデータに対する読取りがロック待ちになり得ます。 MVCCでは過去のコミット済み版を読めるため、読取りと更新の競合を減らせます。 READ COMMITTEDでは、方式が異なっても未コミットの値は参照できません。

出典:令和6年度 秋期 データベーススペシャリスト試験 午前II 問14
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。

この回の25問を、アプリで通しで解く

  • 本番と同じ問題数・制限時間で通し演習(模試モード)
  • 間違えた問題は自動で「復習すべき問題」に回る
  • 解説で分からない点はAIに質問できる
SkillStackで無料で始める