令和元年秋期試験問題 午前問28

RDBMSのロックに関する記述のうち,適切なものはどれか。ここで,X,Yはトランザクションとする。

  • XがA表内の特定行aに対して共有ロックを獲得しているときは,YはA表内の別の特定行bに対して専有ロックを獲得することができない。
  • XがA表内の特定行aに対して共有ロックを獲得しているときは,YはA表に対して専有ロックを獲得することができない。
  • XがA表に対して共有ロックを獲得しているときでも,YはA表に対して専有ロックを獲得することができる。
  • XがA表に対して専有ロックを獲得しているときでも,YはA表内の特定行aに対して専有ロックを獲得することができる。
正解 問題へ
分野:テクノロジ系
中分類:データベース
小分類:トランザクション処理
解説
共有・専有の2種類のロックの違いを確認しておきましょう。
共有ロック
データを読込むときに使うロックで、資源がこの状態の場合は他のトランザクションによる更新処理ができなくなる(読込みは可能)。
専有ロック
データを更新するときに使うロックで、資源がこの状態の場合は他のトランザクションによる読込みや更新ができなくなる。
上記の性質から、ある資源に共有または専有ロックが掛けれられているときの新たなロックの可否は次の表の通りになります。
28.png
つまり、資源に掛けられているロックが"共有"である場合にのみ、別のトランザクションが新たに"共有ロック"を掛けることができます。

これを踏まえて各記述を検証すると以下のように判断できます。
  • 共有ロックが掛けられているのは行aなので、それとは別の行bに対する専有ロックは獲得可能です。
  • 正しい。共有ロックが掛けられている行aは表Aの一部なので、表A全体に対する専有ロックは獲得できません。
  • 共有ロックが掛けられている資源に対して、他のトランザクションが獲得可能なのは共有ロックのみです。
  • A表には専有ロックが掛けられているので、A表の一部である行aに対するロックは獲得できません。

Pagetop