Hitachi

ノンストップデータベース HiRDB Version 10 UAP開発ガイド


3.4.2 排他制御のモード

〈この項の構成〉

(1) モードの種類

排他制御では,各々の排他資源に対して5種類の排他制御モードを用います。

  1. 共用モードPRモードProtected Retrieve)

    ほかのトランザクションには参照だけを許すモードです。

  2. 排他モードEXモードExclusive)

    一つのトランザクションだけが排他資源を占有し,ほかのトランザクションには参照,追加,更新及び削除を許さないモードです。

  3. 意図共用モードSRモードShared Retrieve)

    参照だけが許されているモードです。ほかのトランザクションには排他資源の参照,追加,更新及び削除を許すモードです。

  4. 意図排他モードSUモードShared Update)

    参照,追加,更新及び削除が許されているモードです。ほかのトランザクションにも排他資源の参照,追加,更新及び削除を許すモードです。

  5. 共用意図排他モードPUモードProtected Update)

    参照,追加,更新及び削除が許されているモードです。ほかのトランザクションには参照だけを許すモードです。このモードは1.〜4.とは異なり,排他制御モードの遷移の結果として発生します。

排他制御では,排他資源の上位から下位へと順番に排他が掛けられます。排他を掛けていく途中で同一資源に対して,一つでもほかのトランザクションと同時実行できないトランザクションがある場合,そのトランザクションは待ち状態になります。また,上位から下位の資源へ排他を掛けていく途中にPRモード,又はEXモードがある場合,そのモードが掛かっている資源より下位の資源には排他が掛かりません。

同一資源に対して2ユーザが同じ処理をすると仮定したとき,排他制御モードの違いによって,同時に実行できたりできなかったりします。排他制御モードの違いによる2ユーザの同時実行性を次の表に示します。

表3‒8 排他制御モードの違いによる2ユーザの同時実行性

モードの種類

SR

PR

SU

PU

EX

SR

×

PR

×

×

×

SU

×

×

×

PU

×

×

×

×

EX

×

×

×

×

×

(凡例)

○:同時に実行できます。

×:同時に実行できません。

2ユーザが同時に実行できない場合,一般にはトランザクションのコミット待ちになります。ほかのトランザクションのコミット待ちをしないでエラーリターンにする場合,SQL文にWITH ROLLBACK,又はNO WAITを指定します。

(2) モードの遷移

同一ユーザが同一資源に対して,異なる種類の排他制御のモードで二重,三重と次々に排他を掛けていくと,モードは強い方へと遷移していきます。

一度強いモードで排他を掛けてしまうと,後から弱いモードを掛けても,弱いモードへは遷移しません。例えば,行の更新をするときにEXで排他を掛けた場合,更新した行を参照するためにPRで排他を掛けたとしても,その行の排他制御のモードはEXのままです。

現在の排他制御のモードに対して,更に排他制御を掛けた場合のモードの遷移規則を次の表に示します。

表3‒9 排他制御のモードの遷移規則

後から掛けるモード

現在のモード

SR

PR

SU

PU

EX

SR

PR

PR

PU

SU

SU

PU

EX

EX

EX

EX

EX

(凡例)

−:モードは遷移しません。

−以外:遷移後のモードです。

(3) モードの組み合わせ

排他制御は,SQL文の種類,及び実行環境によって,モードの組み合わせが異なります。

SQL文の種類,及び実行環境の違いによる排他制御のモードの組み合わせの例を次の表に示します。

(凡例)

−:排他を掛けません。

−以外:排他を掛けるモードです。

注※1

UAP実行時にデータベースの更新ログを取得しない場合,表に対してEXモードで排他を掛けてコミットまで保持します。行,及びキーに対する排他は掛けません。

なお,UAP実行時にデータベースの更新ログを取得しない運用については,マニュアル「HiRDB システム運用ガイド」を参照してください。

注※2

表,及びインデクスのすべての使用中セグメントに対してEXモードで排他を掛けてコミットまで保持します。

注※3

インデクスのすべての使用中セグメントに対してEXモードで排他を掛けてコミットまで保持します。

注※4

プラグインインデクスの場合はEXモードで排他が掛かりますが,B-Treeインデクスでは排他は掛かりません。

注※5

RDエリアの自動増分が適用されている場合,自動増分処理の開始から終了まで,RDエリアを構成する最終HiRDBファイルに対して排他が掛かります。

注※6

インナレプリカ機能を使用している場合,処理対象RDエリアがあるサーバに対して排他が掛かります。ただし,pd_inner_replica_lock_shiftオペランドにYを指定している場合は排他が掛かりません。

注※7

RDエリアの追加,及び空き領域の再利用機能の変更をする場合,排他が掛かります。

注※8

カレントDBの変更,レプリカの定義や削除,又は更新可能なオンライン再編成実行時など,インナレプリカの構成に関係する変更をした場合,処理対象となるRDエリアがあるレプリカグループに対して排他が掛かります。pd_inner_replica_lock_shiftオペランドにYを指定している場合は常に排他が掛かります。

注※9

処理対象のRDエリアに対してアクセスする場合に排他が掛かります。

注※10

インナレプリカ機能を適用している場合に排他が掛かります。

注※11

HiRDB/パラレルサーバの場合,共用表をアクセスするときは,すべてのバックエンドサーバに対して排他が掛かります。

注※12

HiRDB/パラレルサーバの場合,共用表に対してインデクスを更新しないUPDATE文を実行するときは,すべてのバックエンドサーバに対して排他が掛かります。

注※13

HiRDB/パラレルサーバの場合,共用表及び共用インデクスに対して実行するときは,すべてのバックエンドサーバに対してEXCLUSIVE指定のLOCK文相当の排他が掛かります。HiRDB/シングルサーバの場合,共用表及び共用インデクスに対して実行するときは,EXCLUSIVE指定のLOCK文相当の排他が掛かります。

注※14

システム定義のpd_check_pendingオペランドにUSEを指定,又は指定を省略した場合,ディクショナリ表(資源種別:3005,種別名:DICT)に対して一時的にEXモードで排他を掛けます。データディクショナリ用RDエリア(資源種別:0001,種別名:RDAR)に対しては,トランザクションが終了するまでSUモードで排他を掛けます。

表3‒11 排他制御のモードの組み合わせの代表例(行排他の場合)(2/2)

SQL文

資源

上位←   →下位

インデクス

インデクス情報ファイル※4

順序数生成子

ページ

キー値

論理ファイル

検索

NOWAIT指定

PR

WITH SHARE指定

PR

PR

PR

WITH EXCLUSIVE指定※1

EX

PR

EX

FOR UPDATE句指定※1

EX

PR

EX

上記以外

PR

PR

PR

更新※1※6

NEXT VALUE式指定

EX

SU

EX

EX

EX

上記以外

EX

EX

EX

EX

追加※1

NEXT VALUE式指定

EX

SU

EX

EX

EX

上記以外

EX

EX

EX

EX

削除※1

EX※8

EX

EX

LOCK文

SHARE指定※5

EXCLUSIVE指定

非共用表

共用表※5

表削除※2※7

インデクス定義※7,表定義変更(主キーの追加)※7

インデクス削除※3※7,表定義変更(主キーの削除)※3※7

EX

全行削除※2※7※9

表定義変更(主キーの追加及び削除は除く)※7

順序数生成子定義

EX

順序数生成子削除

EX

(凡例)

−:排他を掛けません。

−以外:排他を掛けるモードです。

注※1

UAP実行時にデータベースの更新ログを取得しない場合,表に対してEXモードで排他を掛けてコミットまで保持します。行,及びキーに対する排他は掛けません。

なお,UAP実行時にデータベースの更新ログを取得しない運用については,マニュアル「HiRDB システム運用ガイド」を参照してください。

注※2

表,及びインデクスのすべての使用中セグメントに対してEXモードで排他を掛けてコミットまで保持します。

注※3

インデクスのすべての使用中セグメントに対してEXモードで排他を掛けてコミットまで保持します。

注※4

プラグインインデクスの遅延一括作成機能を使用して,プラグインインデクスに対して更新をしたときに掛ける排他です。この排他は,コミットまで保持されます。

注※5

HiRDB/パラレルサーバの場合,共用表をアクセスするときは,すべてのバックエンドサーバに対して排他が掛かります。

注※6

HiRDB/パラレルサーバの場合,共用表に対してインデクスを更新しないUPDATE文を実行するときは,すべてのバックエンドサーバに対して排他が掛かります。

注※7

HiRDB/パラレルサーバの場合,共用表及び共用インデクスに対して実行するときは,すべてのバックエンドサーバに対してEXCLUSIVE指定のLOCK文相当の排他が掛かります。

注※8

コミット,又はロールバックするまでEXモードで排他が掛かります。ただし,検索処理は削除行に対して排他を掛けないため,排他待ちになりません。

注※9

システム定義のpd_check_pendingオペランドにUSEを指定,又は指定を省略した場合,ディクショナリ表(資源種別:3005,種別名:DICT)に対して一時的にEXモードで排他を掛けます。データディクショナリ用RDエリア(資源種別:0001,種別名:RDAR)に対しては,トランザクションが終了するまでSUモードで排他を掛けます。

表3‒12 排他制御のモードの組み合わせの代表例(ページ排他の場合)(1/2)

SQL文

資源

上位←   →下位

インナレプリカ構成管理

※6

レプリカグループ構成管理※8

RDエリア

表(NOWAIT検索)

表用

インデクス用

順序数生成子用

最終HiRDBファイル※5

検索

NOWAIT指定

SR

SR

SR

SR

WITH SHARE指定

SR

SR

SR

SR

WITH EXCLUSIVE指定※1

SR

SR

SU

SR

SU

FOR UPDATE句指定※1

SR

SR

SU

SR

SU

上記以外

SR

SR

SR

SR

更新※1※12

NEXT VALUE式指定

SR

SR

SU

SU

EX

SU

上記以外

SR

SR

SU

EX

SU

追加※1

NEXT VALUE式指定

SR

SR

SU

SU

EX

SU

上記以外

SR

SR

SU

EX

SU

削除※1

SR

SR

SU

SU

LOCK文

SHARE指定

※11

SR

SR

SR

PR

EXCLUSIVE指定

非共用表

SR

SR

SU

EX

共用表※11

SR

SR

EX

EX

表削除※2※13

SU

EX

EX

インデクス定義※13,表定義変更(主キーの追加)※13

SU

EX

インデクス削除※3※13,表定義変更(主キーの削除)※3※13

SR

※10

SU

EX※4

EX

全行削除※2※13※14

SR

SR

SU

EX

EX

表定義変更(主キーの追加及び削除は除く)※13

SR※9

SR※9

SU※7

EX

EX

順序数生成子定義

SU

順序数生成子削除

SU

(凡例)

−:排他を掛けません。

−以外:排他を掛けるモードです。

注※1

UAP実行時にデータベースの更新ログを取得しない場合,表に対してEXモードで排他を掛けてコミットまで保持します。ページ,及びキーに対する排他は掛けません。

なお,UAP実行時にデータベースの更新ログを取得しない運用については,マニュアル「HiRDB システム運用ガイド」を参照してください。

注※2

表,及びインデクスのすべての使用中セグメントに対してEXモードで排他を掛けてコミットまで保持します。

注※3

インデクスのすべての使用中セグメントに対してEXモードで排他を掛けてコミットまで保持します。

注※4

プラグインインデクスの場合はEXモードで排他が掛かりますが,B-Treeインデクスでは排他は掛かりません。

注※5

RDエリアの自動増分が適用されている場合,自動増分処理の開始から終了まで,RDエリアを構成する最終HiRDBファイルに対して排他が掛かります。

注※6

インナレプリカ機能を使用している場合,処理対象RDエリアがあるサーバに対して排他が掛かります。ただし,pd_inner_replica_lock_shiftオペランドにYを指定している場合は排他が掛かりません。

注※7

RDエリアの追加,及び空き領域の再利用機能の変更をする場合,排他が掛かります。

注※8

カレントDBの変更,レプリカの定義や削除,又は更新可能なオンライン再編成実行時など,インナレプリカの構成に関係する変更をした場合,処理対象となるRDエリアがあるレプリカグループに対して排他が掛かります。pd_inner_replica_lock_shiftオペランドにYを指定している場合は常に排他が掛かります。

注※9

処理対象のRDエリアに対してアクセスする場合に排他が掛かります。

注※10

インナレプリカ機能を適用している場合に排他が掛かります。

注※11

HiRDB/パラレルサーバの場合,共用表をアクセスするときは,すべてのバックエンドサーバに対して排他が掛かります。

注※12

HiRDB/パラレルサーバの場合,共用表に対してインデクスを更新しないUPDATE文を実行するときは,すべてのバックエンドサーバに対して排他が掛かります。

注※13

HiRDB/パラレルサーバの場合,共用表及び共用インデクスに対して実行するときは,すべてのバックエンドサーバに対してEXCLUSIVE指定のLOCK文相当の排他が掛かります。HiRDB/シングルサーバの場合,共用表及び共用インデクスに対して実行するときは,EXCLUSIVE指定のLOCK文相当の排他が掛かります。

注※14

システム定義のpd_check_pendingオペランドにUSEを指定,又は指定を省略した場合,ディクショナリ表(資源種別:3005,種別名:DICT)に対して一時的にEXモードで排他を掛けます。データディクショナリ用RDエリア(資源種別:0001,種別名:RDAR)に対しては,トランザクションが終了するまでSUモードで排他を掛けます。

表3‒13 排他制御のモードの組み合わせの代表例(ページ排他の場合)(2/2)

SQL文

資源

上位←   →下位

インデクス

インデクス情報ファイル※4

順序数生成子

ページ

キー値

論理ファイル

検索

NOWAIT指定

PR

WITH SHARE指定

PR

PR

PR

WITH EXCLUSIVE指定※1

EX

PR

EX

FOR UPDATE句指定※1

EX

PR

EX

上記以外

PR

PR

PR

更新※1※6

NEXT VALUE式指定

EX

SU

EX

EX

EX

上記以外

EX

EX

EX

EX

追加※1

NEXT VALUE式指定

EX

SU

EX

EX

EX

上記以外

EX

EX

EX

EX

削除※1

EX

EX

EX

LOCK文

SHARE指定※5

EXCLUSIVE指定

非共用表

共用表※5

表削除※2※7

インデクス定義※7,表定義変更(主キーの追加)※7

インデクス削除※3※7,表定義変更(主キーの削除)※3※7

EX

全行削除※2※7※8

表定義変更(主キーの追加及び削除は除く)※7

順序数生成子定義

EX

順序数生成子削除

EX

(凡例)

−:排他を掛けません。

−以外:排他を掛けるモードです。

注※1

UAP実行時にデータベースの更新ログを取得しない場合,表に対してEXモードで排他を掛けてコミットまで保持します。ページ,及びキーに対する排他は掛けません。

なお,UAP実行時にデータベースの更新ログを取得しない運用については,マニュアル「HiRDB システム運用ガイド」を参照してください。

注※2

表,及びインデクスのすべての使用中セグメントに対してEXモードで排他を掛けてコミットまで保持します。

注※3

インデクスのすべての使用中セグメントに対してEXモードで排他を掛けてコミットまで保持します。

注※4

プラグインインデクスの遅延一括作成機能を使用して,プラグインインデクスに対して更新をしたときに掛ける排他です。この排他は,コミットまで保持されます。

注※5

HiRDB/パラレルサーバの場合,共用表をアクセスするときは,すべてのバックエンドサーバに対して排他が掛かります。

注※6

HiRDB/パラレルサーバの場合,共用表に対してインデクスを更新しないUPDATE文を実行するときは,すべてのバックエンドサーバに対して排他が掛かります。

注※7

HiRDB/パラレルサーバの場合,共用表及び共用インデクスに対して実行するときは,すべてのバックエンドサーバに対してEXCLUSIVE指定のLOCK文相当の排他が掛かります。

注※8

システム定義のpd_check_pendingオペランドにUSEを指定,又は指定を省略した場合,ディクショナリ表(資源種別:3005,種別名:DICT)に対して一時的にEXモードで排他を掛けます。データディクショナリ用RDエリア(資源種別:0001,種別名:RDAR)に対しては,トランザクションが終了するまでSUモードで排他を掛けます。

表3‒14 排他制御のモードの組み合わせの代表例(インデクスキー値無排他の場合)(1/2)

SQL文

資源

上位←   →下位

インナレプリカ構成管理※5

レプリカグループ構成管理※7

RDエリア

表(NOWAIT検索)

表用

インデクス用

順序数生成子用

最終HiRDBファイル※4

検索

NOWAIT指定

SR

SR

SR

SR

WITH SHARE指定

SR

SR

SR

SR

WITH EXCLUSIVE指定※10

SR

SR

SU

SR

SU

SU

FOR UPDATE句指定※10

SR

SR

SU

SR

SU

SU

上記以外

SR

SR

SR

SR

更新※10※12

NEXT VALUE式指定

SR

SR

SU

SU

EX

SU

上記以外

SR

SR

SU

EX

SU

追加※10

NEXT VALUE式指定

SR

SR

SU

SU

EX

SU

上記以外

SR

SR

SU

EX

SU

削除※10

SR

SR

SU

SU

LOCK文

SHARE指定

※11

SR

SR

SR

PR

EXCLUSIVE指定

非共用表

SR

SR

EX

共用表※11

SR

SR

EX

EX

表削除※1※13

SU

EX

EX

インデクス定義※13,表定義変更(主キーの追加)※13

SU

EX

インデクス削除※2※13,表定義変更(主キーの削除)※2※13

SR

※9

EX※3

EX

全行削除※1※13※14

SR

SR

SU

EX

EX

表定義変更(主キーの追加及び削除は除く)※13

SR※8

SR※8

SU※6

EX

EX

順序数生成子定義

SU

順序数生成子削除

SU

(凡例)

−:排他を掛けません。

−以外:排他を掛けるモードです。

注※1

表,及びインデクスのすべての使用中セグメントに対してEXモードで排他を掛けて,コミットまで保持します。

注※2

インデクスのすべての使用中セグメントに対してEXモードで排他を掛けて,コミットまで保持します。

注※3

プラグインインデクスの場合はEXモードで排他が掛かりますが,B-Treeインデクスでは排他は掛かりません。

注※4

RDエリアの自動増分が適用されている場合,自動増分処理の開始から終了まで,RDエリアを構成する最終HiRDBファイルに対して排他が掛かります。

注※5

インナレプリカ機能を使用している場合,処理対象RDエリアがあるサーバに対して排他が掛かります。ただし,pd_inner_replica_lock_shiftオペランドにYを指定している場合は排他が掛かりません。

注※6

RDエリアの追加,及び空き領域の再利用機能の変更をする場合,排他が掛かります。

注※7

カレントDBの変更,レプリカの定義や削除,又は更新可能なオンライン再編成実行時など,インナレプリカの構成に関係する変更をした場合,処理対象となるRDエリアがあるレプリカグループに対して排他が掛かります。pd_inner_replica_lock_shiftオペランドにYを指定している場合は常に排他が掛かります。

注※8

処理対象のRDエリアに対してアクセスする場合に排他が掛かります。

注※9

インナレプリカ機能を適用している場合に排他が掛かります。

注※10

UAP実行時にデータベースの更新ログを取得しない場合,表に対してEXモードで排他を掛けて,コミットまで保持します。行及びキー値には排他を掛けません。なお,UAP実行時にデータベースの更新ログを取得しない運用については,マニュアル「HiRDB システム運用ガイド」を参照してください。

注※11

HiRDB/パラレルサーバの場合,共用表をアクセスするときは,すべてのバックエンドサーバに対して排他が掛かります。

注※12

HiRDB/パラレルサーバの場合,共用表に対してインデクスを更新しないUPDATE文を実行するときは,すべてのバックエンドサーバに対して排他が掛かります。

注※13

HiRDB/パラレルサーバの場合,共用表及び共用インデクスに対して実行するときは,すべてのバックエンドサーバに対してEXCLUSIVE指定のLOCK文相当の排他が掛かります。HiRDB/シングルサーバの場合,共用表及び共用インデクスに対して実行するときは,EXCLUSIVE指定のLOCK文相当の排他が掛かります。

注※14

システム定義のpd_check_pendingオペランドにUSEを指定,又は指定を省略した場合,ディクショナリ表(資源種別:3005,種別名:DICT)に対して一時的にEXモードで排他を掛けます。データディクショナリ用RDエリア(資源種別:0001,種別名:RDAR)に対しては,トランザクションが終了するまでSUモードで排他を掛けます。

表3‒15 排他制御のモードの組み合わせの代表例(インデクスキー値無排他の場合)(2/2)

SQL文

資源

上位←   →下位

インデクス

インデクス情報ファイル※3

順序数生成子

ページ

キー値

論理ファイル

検索

NOWAIT指定

PR

WITH SHARE指定

−,PR

※4

PR,−

※4

PR

WITH EXCLUSIVE指定※6

−,EX

※4

EX,−

※4

EX

FOR UPDATE句指定※6

−,EX

※4

EX,−

※4

EX

上記以外

−,PR

※4

PR,−

※4

PR

更新※6※8

NEXT VALUE式指定

EX

SU

−,EX

※4※5

EX,−

※4※5

EX

上記以外

EX

−,EX

※4※5

EX,−

※4※5

EX

追加※6

NEXT VALUE式指定

EX

SU

−,EX

※4※5

EX,−

※4※5

EX

上記以外

EX

−,EX

※4※5

EX,−

※4※5

EX

削除※6

−,EX

※4※5

EX,−

※4※5

EX

LOCK文

SHARE指定※7

EXCLUSIVE指定

非共用表

共用表※7

表削除※1※9

インデクス定義※9,表定義変更(主キーの追加)※9

インデクス削除※2※9,表定義変更(主キーの削除)※2※9

EX

全行削除※1※9※10

表定義変更(主キーの追加及び削除は除く)※9

順序数生成子定義

EX

順序数生成子削除

EX

(凡例)

−:排他を掛けません。

−以外:排他を掛けるモードです。

注※1

表,及びインデクスのすべての使用中セグメントに対してEXモードで排他を掛けて,コミットまで保持します。

注※2

インデクスのすべての使用中セグメントに対してEXモードで排他を掛けて,コミットまで保持します。

注※3

プラグインインデクスの遅延一括作成機能を使用して,プラグインインデクスに対して更新をした場合に掛ける排他です。コミットまで保持します。

注※4

行排他の場合,資源「行」に排他を掛けて,資源「ページ」には排他を掛けません。

ページ排他の場合,資源「行」に排他を掛けないで,資源「ページ」に排他を掛けます。

注※5

ユニークインデクスが定義されている場合,ページ排他の場合でも資源「行」に排他が掛かります。

注※6

UAP実行時にデータベースの更新ログを取得しない場合,表に対してEXモードで排他を掛けて,コミットまで保持します。行及びキー値には排他を掛けません。なお,UAP実行時にデータベースの更新ログを取得しない運用については,マニュアル「HiRDB システム運用ガイド」を参照してください。

注※7

HiRDB/パラレルサーバの場合,共用表をアクセスするときは,すべてのバックエンドサーバに対して排他が掛かります。

注※8

HiRDB/パラレルサーバの場合,共用表に対してインデクスを更新しないUPDATE文を実行するときは,すべてのバックエンドサーバに対して排他が掛かります。

注※9

HiRDB/パラレルサーバの場合,共用表及び共用インデクスに対して実行するときは,すべてのバックエンドサーバに対してEXCLUSIVE指定のLOCK文相当の排他が掛かります。

注※10

システム定義のpd_check_pendingオペランドにUSEを指定,又は指定を省略した場合,ディクショナリ表(資源種別:3005,種別名:DICT)に対して一時的にEXモードで排他を掛けます。データディクショナリ用RDエリア(資源種別:0001,種別名:RDAR)に対しては,トランザクションが終了するまでSUモードで排他を掛けます。

表3‒16 排他制御のモードの組み合わせの代表例(検査保留状態に設定する場合)(1/2)

SQL文及び

ユティリティ

資源※1

上位←   →下位

RDエリア

表(NOWAIT検索)

表用※2

インデクス用

LOB用

最終HiRDBファイル

全行削除※4

SU

EX

EX

表定義変更(分割格納条件変更)

SU

EX

EX

データベース作成ユティリティ(pdload)※3

SU

EX

EX

データベース再編成ユティリティ(pdrorg)※3

SU

EX

EX

データベース構成変更ユティリティ(pdmod)

SU

EX

EX

整合性チェックユティリティ(pdconstck)※3

SU

EX

EX

オンライン再編成の追い付き反映コマンド(pdorend)※3

SU

EX

EX

(凡例)

−:排他を掛けません。

−以外:排他を掛けるモードです。

注※1

参照制約,又は検査制約を定義した表に関する資源を示します。

注※2

検査保留状態に設定するRDエリアに対して排他を掛けます。

注※3

HiRDB/パラレルサーバの場合,共用表に対して実行するときは,すべてのバックエンドサーバに対してEXCLUSIVE指定のLOCK文相当の排他が掛かります。共用表のLOCK文実行時に掛かる排他制御モードについては,次に示す表のLOCK文のEXCLUSIVE指定の行を参照してください。

注※4

システム定義のpd_check_pendingオペランドにUSEを指定,又は指定を省略した場合,ディクショナリ表(資源種別:3005,種別名:DICT)に対して一時的にEXモードで排他を掛けます。データディクショナリ用RDエリア(資源種別:0001,種別名:RDAR)に対しては,トランザクションが終了するまでSUモードで排他を掛けます。

表3‒17 排他制御のモードの組み合わせの代表例(検査保留状態に設定する場合)(2/2)

SQL文及び

ユティリティ

資源※1

上位←   →下位

インデクス

インデクス情報ファイル

ページ

キー値

論理ファイル

全行削除※3

表定義変更(分割格納条件変更)

データベース作成ユティリティ(pdload)※2

データベース再編成ユティリティ(pdrorg)※2

データベース構成変更ユティリティ(pdmod)

整合性チェックユティリティ(pdconstck)※2

オンライン再編成の追い付き反映コマンド(pdorend)※2

(凡例)

−:排他を掛けません。

注※1

参照制約,又は検査制約を定義した表に関する資源を示します。

注※2

HiRDB/パラレルサーバの場合,共用表に対して実行するときは,すべてのバックエンドサーバに対してEXCLUSIVE指定のLOCK文相当の排他が掛かります。共用表のLOCK文実行時に掛かる排他制御モードについては,次に示す表のLOCK文のEXCLUSIVE指定の行を参照してください。

注※3

システム定義のpd_check_pendingオペランドにUSEを指定,又は指定を省略した場合,ディクショナリ表(資源種別:3005,種別名:DICT)に対して一時的にEXモードで排他を掛けます。データディクショナリ用RDエリア(資源種別:0001,種別名:RDAR)に対しては,トランザクションが終了するまでSUモードで排他を掛けます。

(4) CREATE TABLEにWITHOUT ROLLBACKオプションを指定した表の排他解除タイミング

CREATE TABLEにWITHOUT ROLLBACKオプションを指定した表の排他解除タイミングを次の表に示します。

(凡例)

−:排他が掛からない,又は該当しない(ページ排他は指定できない)ことを示します。

×:SQL実行時に排他が解除されないことを示します。

注※

インナレプリカ機能を使用している場合,インナレプリカ構成管理に排他が掛かります。更新可能なオンライン再編成を使用している場合,インナレプリカ構成管理又はレプリカグループ構成管理に排他が掛かります。

表3‒19 CREATE TABLEにWITHOUT ROLLBACKオプションを指定した表の排他解除タイミング(インデクスが定義されていない場合(2/2))

SQL文

資源

上位←   →下位

インデクス

インデクス情報ファイル

ページ

キー値

論理ファイル

検索

NOWAIT指定

WITH SHARE指定

×

WITH EXCLUSIVE指定

×

FOR UPDATE句指定

×

上記以外

×

更新

追加

削除

LOCK文

SHARE指定

EXCLUSIVE指定

表削除

インデクス

定義

削除

全行削除

表定義変更

(凡例)

−:排他が掛からない,又は該当しない(ページ排他は指定できない)ことを示します。

○:SQL実行時に排他が解除されることを示します。

×:SQL実行時に排他が解除されないことを示します。

表3‒20 CREATE TABLEにWITHOUT ROLLBACKオプションを指定した表の排他解除タイミング(インデクスが定義されている場合(1/2))

SQL文

資源

上位←   →下位

インナレプリカ構成管理

レプリカグループ構成管理

RDエリア

表(NOWAIT検索)

表用

インデクス用

最終HiRDBファイル

検索

NOWAIT指定

×

×

×

×

×

WITH SHARE指定

×

×

×

×

×

WITH EXCLUSIVE指定

×

×

×

×

×

FOR UPDATE句指定

×

×

×

×

×

上記以外

×

×

×

×

×

更新

×

×

×

×

×

追加

×

×

×

×

×

削除

×

×

×

×

×

LOCK文

SHARE指定

×

×

×

×

×

EXCLUSIVE指定

×

×

×

×

×

表削除

×

×

×

×

インデクス

定義

×

×

×

×

削除

×

×

×

×

全行削除

×

×

×

×

×

×

表定義変更

×

×

×

(凡例)

−:排他が掛からない,又は該当しない(ページ排他は指定できない)ことを示します。

×:SQL実行時に排他が解除されないことを示します。

注※

インナレプリカ機能を使用している場合,インナレプリカ構成管理に排他が掛かります。更新可能なオンライン再編成を使用している場合,インナレプリカ構成管理又はレプリカグループ構成管理に排他が掛かります。

表3‒21 CREATE TABLEにWITHOUT ROLLBACKオプションを指定した表の排他解除タイミング(インデクスが定義されている場合(2/2))

SQL文

資源

上位←   →下位

インデクス

インデクス情報ファイル

ページ

キー値

論理ファイル

検索

NOWAIT指定

WITH SHARE指定

×

※1

WITH EXCLUSIVE指定

×

※1

FOR UPDATE句指定

×

※1

上記以外

×

※1

更新

※2

追加

※4

※3

削除

※4

※3

LOCK文

SHARE指定

EXCLUSIVE指定

表削除

インデクス

定義

削除

全行削除

表定義変更

(凡例)

−:排他が掛からない,又は該当しない(インデクス定義及びページ排他は指定できない)ことを示します。

○:SQL実行時に排他が解除されることを示します。

×:SQL実行時に排他が解除されないことを示します。

注※1

システム定義のpd_indexlock_modeオペランドがKEY(インデクス排他あり)の場合,処理対象のキー値を別のキー値に変更したときに排他が解除されます。

注※2

ユニークキーインデクスの場合,○となります。

注※3

システム定義のpd_indexlock_modeオペランドがKEY(インデクス排他あり)の場合,×となります。

注※4

システム定義のpd_idx_without_rollbackオペランドがNの場合,×となります。