ロック属性
データベース・マネージャーのロック機能には、いくつかの基本属性があります。
属性には以下のものが含まれます。
- Mode
- ロックの所有者に許可されるアクセスの種類、そしてロックの対象の並行ユーザーに許可されるアクセスの種類。 これは、しばしばロックの状態 と呼ばれます。
- Object
- ロックするリソース。 明示的にロックできるオブジェクトの唯一のタイプは表です。 データベース・マネージャーは、行、表スペースなど、他のタイプのリソースにもロックを設定します。 マルチディメンション・クラスタリング (MDC) 表や挿入時クラスタリング (ITC) 表にはブロック・ロックも設定でき、パーティション表にはデータ・パーティション・ロックを設定できます。 ロックされているオブジェクトは、ロックの細分性 を表します。
- ロック・カウント
- ロックが保持される時間の長さ。 照会が実行される分離レベルは、ロック・カウントに影響を与えます。
表 1 に、ロック・モードをリストし、それらの効果をリソースに対する制御の増加順に説明します。
ロック・モード | 適用できるオブジェクト・タイプ | 説明 |
---|---|---|
IN (意図なし) | 表スペース、ブロック、表、データ・パーティション | ロックの所有者は、非コミット・データを含め、 オブジェクト内のすべてのデータを読み取ることができますが、更新はできません。 同時に実行される他のアプリケーションは、その表を読み取ったり更新したりできます。 |
IS (意図的共有) | 表スペース、ブロック、表、データ・パーティション | ロック所有者は、ロックされている表のデータを読み取ることはできますが、 更新はできません。 他のアプリケーションは、その表を読み取ったり更新したりできます。 |
IX (意図的排他) | 表スペース、ブロック、表、データ・パーティション | ロック所有者と同時に実行されるアプリケーションとは、 データを読み取ったり更新したりできます。 同時に実行される他のアプリケーションは、 その表を読み取ったり更新したりできます。 |
NS (スキャン共有) | Rows | ロック所有者とすべての並行アプリケーションは、 ロックされた行を読み取ることはできますが、更新はできません。 このロックは、S ロックの代わりに、表の行に対して獲得されます。 この場合、アプリケーションの分離レベルは、RS か CS のいずれかです。 |
NW (次キーの弱い排他) | Rows | 行が索引に挿入されるとき、NW ロックが次の行に獲得されます。 次の行が現在 RR スキャンによってロックされている場合にのみ、これが発生します。 ロック所有者は、ロックされた行の読み取りはできますが更新はできません。 このロック・モードは、NS ロックと互換性があることを除けば、X ロックと類似した働きをします。 |
S (共有) | 行、ブロック、表、データ・パーティション | ロック所有者とすべての並行アプリケーションは、 ロックされたデータを読み取ることはできますが、更新はできません。 |
SIX (意図的排他共有) | 表、ブロック、データ・パーティション | ロック所有者は、データを読み取ったり更新したりできます。 同時に実行される他のアプリケーションは、 その表を読み取ることができます。 |
U (更新) | 行、ブロック、表、データ・パーティション | ロック所有者は、データを更新できます。 他の作業単位はロックされたオブジェクトのデータを読み取ることはできますが、更新はできません。 |
X (排他) | 行、ブロック、表、バッファー・プール、データ・パーティション | ロック所有者は、ロックされたオブジェクトのデータを読み取ったり更新したりできます。 ロックされたオブジェクトにアクセスできるのは、非コミット読み取り (UR) アプリケーションだけです。 |
Z (超排他) | 表スペース、表、データ・パーティション、ブロック | このロックが表上で獲得されるのは、表が変更またはドロップされるとき、 表の索引が作成またはドロップされるとき、 あるいは表の一部のタイプが再編成されるときなど、特定の状況においてです。 同時に実行される他のアプリケーションは、 その表を読み取ったり更新したりできません。 |