データベーススペシャリスト令和3年秋期 午前Ⅱ 問13

問13

2相ロック方式を用いたトランザクションの同時実行制御に関する記述のうち,適切なものはどれか。
  • 全てのトランザクションが直列に制御され,デッドロックが発生することはない。
  • トランザクションのコミット順序は,トランザクション開始の時刻順となるように制御される。
  • トランザクションは,自分が獲得したロックを全て解除した後にだけ,コミット操作を実行できる。
  • トランザクションは,必要な全てのロックを獲得した後にだけ,ロック解除命令を実行できる。
  • [出題歴]
  • データベース R5秋期 問12
  • データベース H22春期 問15
  • データベース H27春期 問13

分類

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

正解

解説

2相ロック方式は、トランザクション処理で読書きが必要になったデータにその都度ロックをかけていき、全てのロックを獲得した後にだけロックの解除を行うことができるロッキングプロトコルです。ロックを獲得する段階が第1フェーズ(成長相)、使い終わった資源のロックを解除するのが第2フェーズ(縮退相)です。
13.png/image-size:282×216
ロックをかけたデータは以後必要が無くなるまで他のトランザクションの書込み用に読み込まれることはなくなるため、トランザクションの相反直列化可能性が保証されます。2相ロック方式は、多くのDBMSで採用されています。
  • 2相ロックに従うことで全てのトランザクションが直列に制御されますが、デッドロックが発生しないわけではありません。別のトランザクションが同じ資源を要求すれば、ロック順序によってはデッドロックが起こることもあります。
  • 複数のトランザクションが並行実行されるため、競合するデータの有無、トランザクションでの処理量によってコミット順序は変わってきます。
  • 多くのDBMSで採用されている厳密な(Strict)2相ロックでは、獲得したロックのうち専有ロックをコミットの直前段階で解除することを求めます。
  • 正しい。2層ロック方式には、厳密な(Strict)2相ロック、厳格な(Rigorous)2相ロック、厳密でない(Non-strict)2相ロックなど幾つかの種類がありますが、どの方式においてもロックを獲得する第1相(前半部)とロックを解除する第2相(後半部)が明確に区別され、2つの段階が交わることはありません。
© 2016-2024 データベーススペシャリストドットコム All Rights Reserved.

Pagetop