• 検索結果がありません。

排他の取得期間

ドキュメント内 TP1/EE/Extended Data Cache 使用の手引 (ページ 47-51)

(2) ページ

2.4  XDB のトランザクション制御

2.4.3  排他の取得期間

クションについては,UAP側で処理を再実行できるようにしてください。

2-9 排他の取得期間

説明

更新バッファ上のデータを

DB

エリアに反映するときに排他が取得されます。

行単位(インデクスはページ単位)で排他が取得されるため,排他の取得期間中 は

A

行を参照したり,A行を更新バッファ上に読み込んだりすることはできませ ん。

(1) 同じ行を同時に更新するトランザクションがある場合

同じ行を同時に更新するトランザクションがある場合の例を次の図に示します。

2-10 同じ行を同時に更新するトランザクションがある場合の例

説明

スレッド

2

による

A

行の更新処理中に,スレッド

1

A

行を更新しようとしたた め,スレッド

1

はエラーとなり,トランザクションがロールバックします。

スレッド

2

による

A

行の更新確定後(DBエリアへの反映確定後)に,スレッド

3

による

A

行の更新処理が開始されたため,スレッド

3

A

行を更新できます。

同一行に対するコミット処理は同時実行できません。そのため,スレッド

2

のコ ミット処理が完了したあとに,スレッド

3

のコミット処理が開始されます。

(2) 同じ行を更新するトランザクションと参照するトランザクションが

ある場合

2-11 同じ行を更新するトランザクションと参照するトランザクションがある場合の

説明

スレッド

1

A

行の更新を行い,スレッド

2

A

行を参照しています。

この場合,スレッド

1

の更新確定前後(DBエリアへの反映確定前後)で,スレッ ド

2

が取り出す値が変わります。

2.4.4 SQL エラーに伴うロールバック

SQL

の実行中にエラーが発生し,トランザクションを続行できなくなった場合,XDBは このトランザクションによるデータベースの更新を無効にし,SQL連絡領域中の

SQLWARN6

'W'

を設定して

UAP

に処理を戻します。SQLWARN6に

'W'

が設定され た場合は,TP1/EEのライブラリ関数を発行して,このトランザクションをロールバッ クさせてください。ロールバックしない状態で

SQL

を発行すると,SQLはすべてエ ラーになります。また,この状態のまま

TP1/EE

に制御を戻すと,同期点を取得する処 理でエラーが発生します。その場合,出力されたメッセージを参照して,エラー要因を 取り除き,該当するトランザクションの

RPC

サービス要求を再実行してください。

ドキュメント内 TP1/EE/Extended Data Cache 使用の手引 (ページ 47-51)