平成22年春期試験問題 午前Ⅱ 問15

2相ロック方式を用いたトランザクションの同時実行制御に関する記述のうち,適切なものはどれか。

  • すべてのトランザクションが直列に制御され,デッドロックが発生することはない。
  • トランザクションのコミット順序は,トランザクション開始の時刻順となるように制御される。
  • トランザクションは,自分が獲得したロックをすべて解除した後にだけ,コミット操作を実行できる。
  • トランザクションは,必要なロック獲得命令をすべて実行した後にだけ,ロック解除命令を実行できる。
正解 問題へ
分野:テクノロジ系
中分類:データベース
小分類:トランザクション処理
解説
2相ロック方式は、トランザクション処理で読書きが必要になったデータにその都度ロックをかけていき、全てのロックを獲得した後にだけロックの解除を行うことができるロッキングプロトコルです。ロックを獲得する段階が第1フェーズ(成長相)、使い終わった資源のロックを解除するのが第2フェーズ(縮退相)です。
15.gif
ロックをかけたデータは以後必要が無くなるまで他のトランザクションの書込み用に読み込まれることはなくなるため、トランザクションの相反直列化可能性が保証されます。2相ロック方式は、多くのDBMSで採用されています。
  • 2相ロックに従うことで全てのトランザクションが直列に制御されますが、デッドロックが発生しないわけではありません。別のトランザクションが同じ資源を要求すれば、ロック順序によってはデッドロックが起こることもあります。
  • 複数のトランザクションが並行実行されるため、競合するデータの有無、トランザクションでの処理量によってコミット順序は変わってきます。
  • 多くのDBMSで採用されている厳密な(Strict)2相ロックでは、獲得したロックのうち専有ロックをコミットの直前段階で解除することを求めます。
  • 正しい。2層ロック方式には、厳密な(Strict)2相ロック、厳格な(Rigorous)2相ロック、厳密でない(Non-strict)2相ロックなど幾つかの種類がありますが、どの方式においてもロックを獲得する第1相(前半部)とロックを解除する第2相(後半部)が明確に区別され、2つの段階が交わることはありません。

この問題の出題歴


Pagetop