令和元年度秋期 応用情報技術者試験 午前 問28
RDBMS のロックに関する記述のうち,適切なものはどれか。ここで,X,Y はトランザクションとする。
- ア X が A 表内の特定行 a に対して共有ロックを獲得しているときは,Y は A 表内の別の特定行 b に対して専有ロックを獲得することができない。
- イ X が A 表内の特定行 a に対して共有ロックを獲得しているときは,Y は A 表に対して専有ロックを獲得することができない。
- ウ X が A 表に対して共有ロックを獲得しているときでも,Y は A 表に対して専有ロックを獲得することができる。
- エ X が A 表に対して専有ロックを獲得しているときでも,Y は A 表内の特定行 a に対して専有ロックを獲得することができる。
解答・解説を見る
正解:イ
AI解説
共有ロック(Sロック)は複数トランザクションが同時に取得でき読み取りの並行性を保つが、専有ロック(排他ロック、Xロック)を取得するには対象に他のロックが存在しないことが必要である。表単位のロックの場合、Xが表全体に対して共有ロックを持っていれば、Yはその表に対して専有ロックを獲得できない。 ア: Xが特定行aに共有ロックを持っていても、Yが別の特定行bに専有ロックを獲得することは通常可能であり、この記述は誤りである(行レベルロックでは競合しない別行への排他ロックは可能)。 イ: Xが表内の特定行aに共有ロックを獲得している場合、Yがその表全体に対して専有ロックを獲得しようとすると、Xの行ロックと競合するため獲得できず、この記述は正しく正解である。 ウ: Xが表全体に対して共有ロックを獲得している場合、Yが同じ表全体に対して専有ロックを獲得することはロックの互換性上できないため、この記述は誤りである。 エ: Xが表全体に対して専有ロックを獲得している場合、Yがその表内の特定行に専有ロックを獲得することは、表全体の排他ロックと競合するためできず、この記述は誤りである。 💡 ロックの互換性は「共有ロック同士は共存できるが、専有ロックは他のいかなるロックとも共存できない」という基本原則で判断し、表ロックと行ロックの粒度の違いにも注意する。
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。