Strict 2PL はデッドロックを防げない
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2013/07/08 13:37 UTC 版)
「ツーフェーズロック」の記事における「Strict 2PL はデッドロックを防げない」の解説
リアルタイムシステムではデッドロックを防ぐことは重要である。また、分散データベースや多重化されたフォールトトレラントシステムでは困難だろう。 Strict 2PL ではデッドロックが以下のような流れで発生する。 テキストでは以下のようになる T1: X(A) T2:X(B) T1:X(B) T2: X(A) T1 は T2 が B にかけたロックが外されるのを待ち、T2 は T1 が A にかけたロックが外されるのを待つ。2つのトランザクションはその先に進むことができず、両者共にデッドロック状態になる。 デッドロック問題には汎用の解決策は存在しない。従って、状況に応じて予防/対処するしかない。状況によっては、「銀行家のアルゴリズム」や「ロック獲得順の設定」のような対策によってデッドロックを防ぐこともできる。 厳密なツーフェーズロックよりもさらに厳密な 厳格な(Rigorous)ツーフェーズロックもある。これはトランザクションのコミットの際に共有ロックを含めた全ロックを解放するものである。多くのデータベースは Strict 2PL を使用している。
※この「Strict 2PL はデッドロックを防げない」の解説は、「ツーフェーズロック」の解説の一部です。
「Strict 2PL はデッドロックを防げない」を含む「ツーフェーズロック」の記事については、「ツーフェーズロック」の概要を参照ください。
- Strict 2PL はデッドロックを防げないのページへのリンク