平成29年度 春期 午前Ⅱ 問18
トランザクション処理
排他制御に関する問題
RDBMSのロックに関する記述のうち,適切なものはどれか。ここで,X,Yはトランザクションとする。
- アXがA表内の特定行aに対して共有ロックを獲得しているときは,YはA表内の別の特定行bに対して専有ロックを獲得することができない。
- イXがA表内の特定行aに対して共有ロックを獲得しているときは,YはA表に対して専有ロックを獲得することができない。
- ウXがA表に対して共有ロックを獲得しているときでも,YはA表に対して専有ロックを獲得することができる。
- エXがA表に対して専有ロックを獲得しているときでも,YはA表内の特定行aに対して専有ロックを獲得することができる。
答えと解説を見る
✓ これが正解イXがA表内の特定行aに対して共有ロックを獲得しているときは,YはA表に対して専有ロックを獲得することができない。
解説
表の中の行が共有ロック中なら、表全体の専有ロックは取れません。
見分ける軸は、ロックの範囲が重なるかどうかと、重なるときに共有ロックと専有ロックが両立するかです。共有ロックどうしは両立しますが、専有ロックは、同じ範囲に他のどんなロックがあっても獲得できません。表に対するロックは、その表の中のすべての行を範囲に含みます。XがA表の行aに共有ロックを持っているとき、YがA表全体に専有ロックを掛けようとすると、その範囲には行aが含まれるので重なり、獲得できません。正解の記述はこの関係を述べています。ロックの単位が違うときは、大きい方の範囲が小さい方を含むかを先に確かめるのが見分け方です。
ほかの選択肢はなぜ違うのか
- アXがA表内の特定行aに対して共有ロックを…:行aと行bは別の行なので、ロックの範囲は重なりません。XがA表の行aに共有ロックを持っていても、YはA表の別の行bに専有ロックを獲得できます。
- ウXがA表に対して共有ロックを獲得している…:共有ロックと専有ロックは両立しません。XがA表全体に共有ロックを持っている間は、YがA表全体に専有ロックを獲得することはできず、Xが解放するまで待つことになります。
- エXがA表に対して専有ロックを獲得している…:表全体への専有ロックは、表の中の行aも対象に含んでいます。Xがこれを持っている限り、行aを含むどの行にもYは手を出せず、行aへの専有ロックはXの解放まで待たされます。
この問題の用語
- 排他制御同じデータを同時に更新しても、矛盾が起きないようにする仕組みです。先の処理が終わるまで、後の処理を待たせて防ぎます。
- トランザクションデータベースへの一連の処理をひとまとめにした単位のこと。途中で失敗すると開始前の状態へ戻され、中途半端な更新が残りません。
出典:平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問18
同じ用語が出る問題
- 令和7年度 秋期 午前Ⅱ 問18:ブロックチェーンに関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問17:デッドロックに関する問題(トランザクション)
- 令和3年度 秋期 午前Ⅱ 問16:MVCCに関する問題(排他制御)
- 令和3年度 秋期 午前Ⅱ 問14:排他制御に関する問題(排他制御)
- 平成25年度 春期 午前Ⅱ 問14:ロールフォワードに関する問題(排他制御)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)