正答1
解説
正解は1です。
データベースの排他制御で使うロックの組合せに関する問題です。
共有ロックは読取りのためのロックで、占有ロック(専有ロック)は更新のためのロックです。
【選択肢別解説】
1:○ 共有ロックがかかった資源には、別のトランザクションも共有ロックをかけられます。
読取り同士はデータを変更しないので、同時に行っても矛盾が生じないためです。
2:× 共有ロックがかかった資源には、別のトランザクションが占有ロックをかけることはできません。
読取り中のデータを別のトランザクションが更新すると、読んだ内容と矛盾が生じるためです。
3:× 占有ロックがかかった資源には、別のトランザクションが共有ロックをかけることはできません。
更新中で確定していないデータを読むと、誤った値を使うおそれがあるためです。
4:× 占有ロックがかかった資源には、別のトランザクションが占有ロックをかけることもできません。
同時に更新すると、一方の更新が失われる(ロストアップデート)おそれがあるためです。
【ポイント】
同時にかけられるのは「共有ロックと共有ロック」の組合せだけです。
占有ロックが一つでも関わる組合せは、先のロックが解除されるまで待たされます。