2.10.2 WAITモードおよび検知モード
WAITモードおよび検知モードについて説明します。
- 〈この項の構成〉
(1) WAITモード
WAITモードには,WAITとNOWAITの2種類があります。排他資源が競合した場合,WAITモードによって次のように排他制御が変わります。
-
WAIT
排他資源を確保できない場合,排他資源を確保できるまで処理を待ち状態にします。ただし,同一トランザクション内ですでに確保している排他資源に対して排他制御モードの遷移が発生したときに,ほかのトランザクションが確保している排他資源によって排他資源の競合が発生した場合はエラー※になります。
- 注※
-
次に示す排他制御モードの遷移についてはエラーになりません。排他制御モードの遷移を伴う排他資源の確保が完了するまでコマンドの処理を待ちます。
-
adbarchivechunkコマンドを実行したときの前処理表(操作対象表)の排他制御モードの遷移(SR→EXへの遷移)
-
adbarchivechunkコマンドを実行したときの操作対象表の排他制御モードの遷移(PU→EXへの遷移)
-
-
NOWAIT
排他資源を確保できない場合,排他資源を確保できなかった処理をエラーにします。
(2) 検知モード
検知モードには,後発検知と検知なしの2種類があります。排他資源が競合した場合,検知モードによって次のように排他制御が変わります。
-
後発検知
先発の処理に後発の処理があることが通知されます。先発の処理は,処理を中断して排他資源をいったん解放します。後発の処理は,先発の処理が確保している排他資源を確保できるまで待ち状態になります。
-
検知なし
先発の処理は継続されます。後発の処理はWAITモードに応じた動作をします。
排他資源が競合する場合の排他制御を次の表に示します。
先発の処理の検知モード |
後発の処理の検知モードとWAITモード |
|||
---|---|---|---|---|
検知なし |
後発検知 |
|||
WAIT |
NOWAIT |
WAIT |
NOWAIT |
|
検知なし |
後発待機 |
後発エラー |
後発待機 |
後発エラー |
後発検知 |
先発へ通知,かつ後発待機 |
先発へ通知,かつ後発待機※ |
- (凡例)
-
-
後発待機
先発の処理が確保した排他資源を確保できるまで後発の処理が待ち状態になります。
-
後発エラー
後発の処理がエラーになります。
-
先発へ通知,かつ後発待機
先発の処理に後発の処理がきたことを通知し,先発の処理が確保した排他資源を確保できるまで後発の処理は待ち状態になります。
-
- 注※
-
先発の処理が後発検知の場合,後発の処理がNOWAITであっても,先発の処理が確保した排他資源を確保できるまで後発の処理は待ち状態になります。