|「ロックおよびデッドロック」セクションの「遅い、またはハングしたように見えるアプリケーション」 |サブセクションにある「次のキーロックによってロック待機またはデッドロックは起こりません」の |下の説明を、次のように変更します。
|次のキーロック は、すべての INSERT および DELETE ステートメントについては次のキーを、 |また SELECT ステートメントについては結果セットを超える、次に大きなキー値を、自動的にロックすることによって、 |反復可能読み取り (RR) 分離レベルを保証します。 |索引のキー部分を更新する UPDATE ステートメントの場合、元の索引キーは削除され、新しいキー値が挿入されます。 |次のキーロックは、キー挿入とキー削除の両方で行われます。 |これは、ANSI および SQL92 標準 RR を保証するために必要で、DB2 デフォルトです。
|アプリケーションのスナップショット情報を調べてください。 |次のキーロックに問題があると思われる場合、どのアプリケーションも |反復可能読み取り (RR) の振る舞いに依存せず、コミットされていない削除をスキップしても |走査に問題なければ、DB2_RR_TO_RS オプションをオンに設定することができます。
|DB2_RR_TO_RS がオンの場合、索引キーの挿入および削除で次のキーロックが行われないため、 |ユーザー表に対する走査で RR の振る舞いは保証されません。 |カタログ表はこのオプションの影響を受けません。
|その他の振る舞いの変更は、DB2_RR_TO_RS がオンであれば、走査の対象となっている行であっても、 |削除済みでコミットされていない行は走査でスキップされることです。
|たとえば、トランザクション A が column1=10 の行を削除し、 |トランザクション B が column1>8 かつ column1<12 を走査するとします。
|DB2_RR_TO_RS がオフであれば、トランザクション B は、トランザクション A がコミット |またはロールバックを行うのを待ちます。 |トランザクション A がロールバックした場合、column1=10 の行はトランザクション B の |照会の結果セットに組み込まれます。
|DB2_RR_TO_RS がオンであれば、トランザクション B は、トランザクション A がコミット |またはロールバックを行うのを待ちません。 |トランザクション B は、削除された行が含まれていない照会結果をすぐに受け取ります。
|ANSI および SQL92 標準 RR が必要な場合、またはコミットされていない削除を走査にスキップさせたくない場合、 |このオプションを使用しないでください。