2相ロッキングプロトコル
Two-Phase Locking Protocol
にそうろっきんぐぷろとこる
各トランザクションが、ロックを獲得するだけのロック拡張相と、解放するだけのロック縮小相の2つに分けてロックを扱う規約で、一度ロックを解放したら新たなロックは獲得しない。全トランザクションがこれに従えば直列化可能性が保証されるが、デッドロックは防げない。ロックをコミットまで保持する厳格な2相ロックにすると、他のトランザクションの未確定データを読む連鎖的な取消しも防げる。
Related
他の資格での定義
トランザクションがロックを扱う期間を、ロックを獲得するだけの拡張相と、解放するだけの縮小相の2つに分ける規約。一度ロックを解放したら、そのトランザクションは新たなロックを獲得しない。すべてのトランザクションがこれに従えば直列化可能性が保証されるが、デッドロックは防げない。
トランザクションのロック取得をロック拡張相(Growing Phase:ロックの取得のみ)とロック縮小相(Shrinking Phase:ロックの解放のみ)に分ける規約。この規約に従うことで直列化可能性が保証される。2相ロックプロトコルとも呼ぶ。
各トランザクションが、ロックを獲得するだけのロック拡張相と、解放するだけのロック縮小相の2つに分けてロックを扱う規約。一度ロックを解放したら、新たなロックは獲得しない。すべてのトランザクションが従えば直列化可能性が保証されるがデッドロックは防げず、ロックをコミットまで保持する厳格な2相ロッキングにすると、未確定のデータを読んだことによる連鎖的なロールバックも防げる。
Past Exams
過去問での出題
過去問で 5 回出題(データベーススペシャリスト試験 2・基本情報技術者試験 1・応用情報技術者試験 1・ITサービスマネージャ試験 1)
出典: 独立行政法人情報処理推進機構(IPA)の過去問題。問題文は IPA のサイトの PDF で確認できます。「選択肢」は、問題文ではなく選択肢に出たものです。用語名で照合しているため、関係の薄い問題が含まれることがあります。
Related
関連キーワードの用語
データを更新するときに古い版を残して複数の版を保持し、各トランザクションには開始時点などで確定していた版を読ませる同時実行制御の方式。読取りがロックを必要とせず、読取りと書込みが互いを待たないため、同時実行性が高い。多くの関係データベース製品が採用している。
複数のトランザクションが同じデータに同時にアクセスしても、1つずつ順に実行した場合と同じ結果になる(直列化可能性)ように制御すること。制御しないと、変更の消失(ロストアップデート)、ダーティリード、ノンリピータブルリードなどの不整合が起きる。実現方式には、ロック方式、時刻印(タイムスタンプ)方式、楽観的方式、多版同時実行制御(MVCC)がある。
データを更新するときに掛けるロック。排他ロックともいう。専有ロックが掛かっているデータには、他のトランザクションは共有ロックも専有ロックも掛けられず、解放されるまで読取りも更新も待たされる。
データを読み取るときに掛けるロック。共有ロックが掛かっているデータには、他のトランザクションも共有ロックを掛けて同時に読めるが、更新のための専有ロックは解放されるまで掛けられない。読取りどうしは並行でき、読取りと更新は互いを待つことになる。
他のトランザクションが更新してまだコミットしていないデータを読み取ってしまう現象。更新した側が後でロールバックすると、存在しなかった値に基づいて処理したことになる。隔離性水準をREAD COMMITTED以上にすれば防げる。
1つのトランザクションの中で同じ行を2回読んだとき、その間に他のトランザクションが行を更新・削除してコミットしたために、異なる値が読み取られる現象。反復不能読取りともいう。隔離性水準をREPEATABLE READ以上にすれば防げる。
