データベーススペシャリスト 平成29年春期 午前U 問18

午前U 問18

RDBMSのロックに関する記述のうち,適切なものはどれか。ここで,X,Yはトランザクションとする。
  • XがA表内の特定行aに対して共有ロックを獲得しているときは,YはA表内の別の特定行bに対して専有ロックを獲得することができない。
  • XがA表内の特定行aに対して共有ロックを獲得しているときは,YはA表に対して専有ロックを獲得することができない。
  • XがA表に対して共有ロックを獲得しているときでも,YはA表に対して専有ロックを獲得することができる。
  • XがA表に対して専有ロックを獲得しているときでも,YはA表内の特定行aに対して専有ロックを獲得することができる。

分類

テクノロジ系 » データベース » トランザクション処理

正解

解説

共有・専有の2種類のロックの違いを確認しておきましょう。
共有ロック
データを読込むときに使うロックで、資源がこの状態の場合は他のトランザクションによる更新処理ができなくなる。(読込みは可能)
専有ロック
データを更新するときに使うロックで、資源がこの状態の場合は他のトランザクションによる読込みや更新ができなくなる。
上記の性質から、ある資源に共有または専有ロックがかけれられているときの新たなロックの可否は次の表の通りになります。
18.gif/image-size:272×136
つまり資源にかけられているロックが"共有"である場合にのみ、別のトランザクションが新たに"共有ロック"をかけることができます。

これを踏まえて各記述を検証すると以下のように判断できます。
  • 共有ロックが掛けられているのは行aなので、それとは別の行bに対する専有ロックは獲得可能です。
  • 正しい。共有ロックが掛けられている行aは表Aの一部なので、表A全体に対する専有ロックは獲得できません。
  • 共有ロックが掛けられている資源に対して、他のトランザクションが獲得可能なのは共有ロックのみです。
  • A表には専有ロックが掛けられているので、A表の一部である行aに対するロックは獲得できません。
© 2016-2019 データベーススペシャリストドットコム All Rights Reserved.

Pagetop