正答1
解説
正解は1です。
排他制御のロックには、共有ロックと専有ロックがあります。
共有ロックは読取り用で、他のトランザクションも読取りはできます。
専有ロック(排他ロック)は更新用で、他のトランザクションは読取りも更新もできません。
【選択肢別解説】
1:○ 共有ロック同士は両立します。
読取りだけならデータが変わらないので、複数のトランザクションが同時に共有ロックを獲得できます。
2:× 共有ロック中の資源に専有ロックはかけられません。
読取り中のデータを更新されると、読み取った内容と食い違うからです。
3:× 専有ロック中の資源に共有ロックはかけられません。
更新途中のデータを読み取ると、確定していない値を読んでしまうからです。
4:× 専有ロック中の資源に別の専有ロックはかけられません。
同時に更新すると、一方の更新が失われるからです。
【ポイント】
両立するのは「共有と共有」の組合せだけです。
専有ロックが一つでも絡むと、後から来たトランザクションはロックの解除まで待たされます。