各種の分離レベルを提供することにより、コスト面から見て並行性を優先するか、または
自アプリケーション処理効率面から見て他アプリケーション処理からの保護を優先するか
選択できます。
このタスクについて
アプリケーションの ISOLATION オプション は、並行的に実行される他処理による考え得る影響から、自処理をどの程度分離するかを指定します。ISOLATION オプションによって、DB2® が行またはページへの S ロックおよび U ロックをどの程度早く解放するかが指定されます。
指定した分離レベルに関係なく、DB2 オブジェクト上の未解決のクレームが、DB2 ユーティリティーまたはコマンドの実行を禁止する場合があります。
以下の表で示すように、デフォルトの ISOLATION オプションは、バインド操作のタイプに応じて異なります。
表 1. 各種バインド操作用のデフォルト ISOLATION 値操作 |
デフォルト値 |
BIND PLAN |
CURRENTDATA (NO) を指定した ISOLATION (CS) |
BIND PACKAGE |
パッケージ・リスト中にパッケージが含まれているプランに使用された値 |
REBIND PLAN または PACKAGE |
再バインドされているプランまたはパッケージの既存の値 |
推奨される分離レベルの設定順序は次のとおりです。
- カーソル固定 (CS)
- 非コミット読み取り (UR)
- 読み取り固定 (RS)
- 反復可能読み取り (RR)
非コミット読み取りによって、最低レベルの分離が提供されますが、ほとんどの場合はカーソル固定分離が推奨されます。
ISOLATION(CS) では、データ保全性を損なうことなく、ハイレベルの並行性が確保されます。
手順
アプリケーションが、データ保全性を損なうことなく、確実にデータに並行してアクセスできるようにするには、次のようにします。
- 特定のアプリケーションの必要性と特性に従って分離レベルを選択します。
- ほとんどのアプリケーションは、ISOLATION(CS) および CURRENTDATA(NO) オプションを指定してバインドします。 これらのオプションは、DB2 によって、ロックを早期に解除し、多くのロックを回避できるようにします。 一般的には、ISOLATION(CS)
を使用すると、DB2 は取得済みのロックをできるだけ早く解放できるようになります。CURRENTDATA(NO) は、通常、DB2 が獲得するロック数を最小限に抑え、ロック回避 の効率を向上させることができます。 ISOLATION(CS)
および CURRENTDATA(NO) を使用する場合は、SKIPUNCI サブシステム・パラメーターの値を
YES にして使用し、コミットされていない挿入の結果を読み取りプログラムが待たないようにします。
- ISOLATION(CS) および CURRENTDATA(NO) を使用しない場合は、優先順位の低い順に、以下のバインド・オプションを使用します。
- ISOLATION(CS) および CURRENTDATA(YES)。これは、アプリケーションに戻されるデータが、
次の FETCH 操作までは変更されてはならない場合。
- ISOLATION(RS)。これは、アプリケーションに戻されるデータが、
アプリケーションがコミットまたはロールバックするまで変更されてはならない場合。ただし、他のアプリケーション処理が追加行を挿入するかどうかには留意しません。
- ISOLATION(RR)。これは、照会の結果として評価されるデータが、
アプリケーションがコミットまたはロールバックするまで変更されてはならない場合。この場合には、新規行を応答セットに挿入することはできません。
- ISOLATION(UR) は慎重に使用する。 リソース・リカバリー・サービス接続機能 UR 分離は、行やページに対するロックを獲得することはほとんどありません。
この
分離機能は高速で、競合はほとんど生じませんが、
コミットされていないデータを読み取ります。アプリケーションおよびエンド・ユーザーが、
生じる可能性がある論理的な矛盾を受け入れることができない場合には、それを使用しないで
ください。
アプリケーションで非コミット・データの読み取りよりも、データの除外を優先する場合は、代わりに SKIP LOCKED DATA 文節の使用を検討してください。