2相ロックとは

にそうろっく

各トランザクションが、ロックをかけていく段階と解除していく段階の2つを持ち、いったんロックを解除し始めたら新たなロックをかけないという排他制御の方式。2相ロック方式とも呼ぶ。直列化可能性が保証されるが、デッドロックは起こりうる。

「2相ロック」は、1分野の1問の練習問題に出てきます(データベースの基礎など)。

この用語の分野: データベースの基礎

2相ロックの練習問題に挑戦

トランザクションの排他制御で使われる2相ロック方式の説明として、正しいものはどれか。

  1. A各トランザクションは、ロックをかける段階と解除する段階を何度繰り返してもよい。これにより、デッドロックが起きないことが保証される
  2. B読み出しにはロックをかけず、書き込みにだけロックをかける。これにより、ダーティリードを含むすべての問題が防げる
  3. C各トランザクションは、ロックを1つでも解除したら、それ以降は新たなロックをかけない。これにより、同時に実行しても直列に実行した場合と同じ結果になることが保証されるが、デッドロックは起こりうる
答えと解説を見る

正解:C. 各トランザクションは、ロックを1つでも解除したら、それ以降は新たなロックをかけない。これにより、同時に実行しても直列に実行した場合と同じ結果になることが保証されるが、デッドロックは起こりうる

2相ロック方式(2PL)では、各トランザクションが、必要なロックを次々にかけていく段階(成長相)と、ロックを解除していく段階(縮退相)の2つの段階を持ち、いったんロックを解除し始めたら、新たなロックはかけません。すべてのトランザクションがこの規則を守ると、同時に実行したときの結果が、トランザクションをある順番で1つずつ実行した場合と同じになること(直列化可能性)が保証されます。ただし、2つのトランザクションが互いに相手のロックの解除を待つデッドロックは防げないので、DBMSはデッドロックを検出して一方をロールバックするなどの対処をします。実際には、コミットするまで専有ロックを解除しない厳格な2相ロック方式がよく使われ、ほかのトランザクションがコミットされていないデータを読むことも防ぎます。

解説の中の「2相ロック」

「2相ロック」が出てくる問題(1問)

  1. トランザクションの排他制御で使われる2相ロック方式の説明として、正しいものはどれか。

データベースの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

関連する用語

トランザクション デッドロック ACID特性 E-R図 インデックス SQL 外部キー 関係データベース 主キー 正規化

用語集の一覧へ