平成24年度 秋期 午前Ⅱ 問22
データベース
排他制御に関する問題
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 も含まれ、行 a の共有ロックとぶつかります。そのため Y は A 表への専有ロックを獲得できません。見分ける軸は、二つのロックの範囲が重なるかどうかと、重なった部分で種類が両立するかどうかです。範囲が重ならなければ両立、重なれば共有同士だけが両立と覚えると判断できます。
ほかの選択肢はなぜ違うのか
- アX が A 表内の特定行 a に対して共…:X が共有ロックを掛けているのは行 a で、Y が専有ロックを掛けようとしているのは別の行 b です。ロックの範囲が重ならないので互いにぶつからず、Y は行 b に専有ロックを獲得できます。
- ウX が A 表に対して共有ロックを獲得し…:X が A 表全体に共有ロックを掛けている間に、Y が同じ A 表全体へ専有ロックを掛けると、範囲が完全に重なります。専有ロックは共有ロックと両立しないので、Y は獲得できません。
- エX が A 表に対して専有ロックを獲得し…:X が A 表全体を専有ロックしている間は、その表に含まれる行 a も X の専有の範囲に入ります。専有ロック同士は両立しないので、Y が行 a に専有ロックを獲得することはできません。
この問題の用語
- 排他制御同じデータを同時に更新しても、矛盾が起きないようにする仕組みです。先の処理が終わるまで、後の処理を待たせて防ぎます。
- トランザクションデータベースへの一連の処理をひとまとめにした単位のこと。途中で失敗すると開始前の状態へ戻され、中途半端な更新が残りません。
出典:平成24年度 秋期 システムアーキテクト試験 午前Ⅱ 問22
同じ用語が出る問題
- 令和7年度 春期 午前Ⅱ 問24:隔離性水準に関する問題(排他制御)
- 令和6年度 春期 午前Ⅱ 問24:デッドロックに関する問題(トランザクション)
- 令和5年度 春期 午前Ⅱ 問24:コミット処理を完了するタイミング(トランザクション)
- 令和4年度 春期 午前Ⅱ 問24:共有ロックに関する問題(トランザクション)
- 平成28年度 秋期 午前Ⅱ 問21:コミットに関する問題(トランザクション)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)