アプリケーション・プロセスに関連する分離レベル は、 並行して実行している他のアプリケーション・プロセスからそのアプリケーション・プロセスを分離する度合いを定義します。
したがって、アプリケーション・プロセスの分離レベル P は、以下を指定します。
分離レベルは、パッケージの属性として指定され、 そのパッケージを使用するアプリケーション・プロセスに適用されます。 分離レベルは、プログラム準備処理で指定されます。 これによって、並行アプリケーション・プロセスによるデータ・アクセスは、 ロックの種類に応じて制限または禁止されます。 各種ロックのタイプおよび属性の詳細については、管理の手引き を参照してください。 宣言済み一時表と宣言済み一時表の行は、 一時表を宣言したアプリケーションによってのみアクセス可能なものなので、 ロックされることはありません。 したがって、ロックおよび分離レベルに関する以下の説明は、宣言済み一時表には当てはまりません。
データベース・マネージャーでは、 大きく分けて次の 3 つのロックがサポートされています。
(非コミット読み取り (UR)を参照。)
ロックは基礎表の行について行われます。 しかし、データベース・マネージャーが複数の行ロックを単一の表ロックに置き換えることがあります。 これをロック・エスカレーション といいます。 アプリケーション・プロセスには、 少なくとも最低要求されるロック・レベルが保証されます。
DB2 ユニバーサル・データベース データベース・マネージャーは、4 つの分離レベルをサポートしています。 分離レベルとは関係なく、データベース・マネージャーは、 挿入、更新、または削除の対象となる行のすべてに排他ロックをかけます。 このため、どの分離レベルでも、 このアプリケーション・プロセスが 1 作業単位中に変更する行は、 その作業単位が終了するまで他のアプリケーション・プロセスから変更されないことが保証されます。 分離レベルには、以下のものがあります。
レベル RR では次のようになります。
RR では、単独読み取り行 (「読み取り固定」の説明を参照) の出現は許されません。
RR レベルで実行しているアプリケーション・プロセスは、 排他ロック以外に、参照するすべての行に対して共有ロックを獲得します。 さらに、アプリケーション・プロセスが並行アプリケーション・プロセスの影響から完全に分離されるようにロックが実行されます。
RR レベルと同様に、RS レベルでは、以下が保証されます。
RR とは異なり RS では、アプリケーション・プロセスは、 他の並行アプリケーション・プロセスの影響から完全には分離されません。 RS レベルでは、 同じ照会を複数回発行するアプリケーション・プロセスで行が追加されていくという場合があります。 このような付加行は単独読み取り行 と呼ばれます。
単独読み取り行は、たとえば次のような状況で発生します。
RS レベルで実行しているアプリケーション・プロセスは、排他ロック以外に、 条件に合うすべての行に対して少なくとも共用ロックを獲得します。
CS レベルは RR レベルと次の点で類似しています。
CS レベルは RR レベルと次の点で異なっています。
CS レベルで実行しているアプリケーション・プロセスは、排他ロックに加えて、 すべてのカーソルの現在行に対して少なくとも共用ロックを獲得します。
SELECT INTO、読み取り専用カーソルによる FETCH、INSERT で使用される全選択、 UPDATE での行の全選択、 またはスカラーの全選択が使用されているなら、UR レベルでは以下のことが可能です。
これ以外の点では、CS レベルの規則が適用されます。
4 つの分離レベルの比較については、付録 I, 分離レベルの比較で説明されています。