2.10.5 確保される排他資源と排他制御モード
確保される排他資源と排他制御モードを次の表に示します。
各排他資源の詳細については,「表2‒15 排他資源の一覧」を参照してください。また,各処理の排他制御の例については,「2.10.8 排他制御の例」を参照してください。
処理内容 |
排他資源 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
シングルコネクション※16 |
ディクショナリ |
前処理表 |
DBエリア |
表 |
||||||||
データ用DBエリア |
ディクショナリ用DBエリア |
システム表用DBエリア |
処理対象表 |
ディクショナリ表 |
システム表(コスト情報) |
システム表(チャンク情報) |
システム表(同義語辞書情報) |
|||||
定義系SQLの実行 |
CREATE VIEW文を実行する場合 |
− |
EX(WAIT) |
EX※1 |
− |
SR |
SR |
− |
SR(WAIT)とEX(WAIT)※14 |
SR |
− |
SR |
ALTER VIEW文を実行する場合 |
− |
EX(WAIT) |
SR(WAIT)とEX※1,※18 |
− |
SR |
SR |
− |
SR(WAIT)とEX(WAIT)※14 |
SR |
− |
SR |
|
次の定義系SQLを実行する場合
|
− |
EX(WAIT) |
− |
− |
SR |
SR |
− |
EX(WAIT) |
SR |
− |
− |
|
上記以外の場合※21 |
− |
EX(WAIT) |
EX |
EX |
SR |
SR |
EX |
EX(WAIT) |
SR |
SR※2 |
− |
|
EX(WAIT)※20,※22,※23 |
EX(WAIT)※20,※22 |
EX(WAIT)※20,※22 |
||||||||||
検索系SQLの実行 |
− |
− |
SR(WAIT)※3 |
− |
− |
− |
SR(WAIT)※4,※5,※6 |
SR(WAIT) |
SR |
SR※7 |
SR |
|
INSERT文,UPDATE文,およびDELETE文の実行 |
更新対象表の場合※21 |
− |
− |
SR(WAIT)※3 |
SU※4,※5,※6 |
− |
− |
SU |
SR(WAIT) |
SR |
SR※7 |
SR |
SU(WAIT)※4,※5,※6 |
SU(WAIT) |
|||||||||||
更新対象表以外の場合 |
− |
− |
SR(WAIT)※3 |
− |
− |
− |
SR(WAIT)※4,※5,※6 |
SR(WAIT) |
SR |
SR※7 |
SR |
|
TRUNCATE TABLE文の実行※21 |
− |
− |
SR(WAIT) |
EX |
− |
SR※17 |
EX |
SR(WAIT) |
SR |
SR※17 |
− |
|
EX(WAIT) |
EX(WAIT) |
|||||||||||
PURGE CHUNK文の実行 |
更新対象表の場合※21 |
− |
− |
SR(WAIT) |
EX |
− |
SR |
EX |
SR(WAIT) |
SR |
SR※15 |
SR |
EX(WAIT) |
EX(WAIT) |
|||||||||||
更新対象表以外の場合※8,21 |
− |
− |
SR(WAIT)※3 |
− |
− |
− |
SR |
SR(WAIT) |
SR |
SR※15 |
SR |
|
SR(WAIT) |
||||||||||||
adbimportコマンドの実行 |
バックグラウンドインポート機能を適用する場合※21 |
SR |
− |
SR(WAIT) |
PU |
− |
SR |
SR(WAIT) |
SR(WAIT) |
SR |
SR |
− |
PU(WAIT) |
||||||||||||
バックグラウンドインポート機能を適用しない場合 |
SR |
− |
SR(WAIT) |
EX |
− |
SR※9 |
EX(WAIT) |
SR(WAIT) |
SR |
SR※9 |
− |
|
adbidxrebuildコマンドの実行 |
バックグラウンドインポートの中断後に実行した場合※10 |
SR |
− |
SR(WAIT) |
EX |
− |
SR |
SR(WAIT) |
SR(WAIT) |
SR |
SR |
− |
バックグラウンドインポートの中断後以外に実行した場合 |
SR |
− |
SR(WAIT) |
EX |
− |
− |
EX(WAIT) |
SR(WAIT) |
SR |
− |
− |
|
adbgetcstコマンドの実行 |
SR |
− |
SR(WAIT) |
EX |
− |
SR |
SR(WAIT) |
SR(WAIT) |
SR |
− |
− |
|
adbdbstatusコマンドの実行 |
DBエリアのサマリ情報を出力する場合 |
SR |
− |
− |
− |
− |
− |
− |
SR(WAIT) |
− |
− |
− |
--shared-lockオプションを指定して情報を出力する場合,または再編成要否の情報を出力する場合※21 |
SR |
− |
SR※19 |
− |
− |
− |
SR※19 |
SR(WAIT) |
− |
− |
− |
|
SR(WAIT)※19 |
SR(WAIT)※19 |
|||||||||||
上記以外の場合※21 |
SR |
− |
SR※19 |
EX |
EX |
EX |
− |
SR(WAIT) |
SR |
SR |
− |
|
SR(WAIT)※19 |
EX(WAIT) |
EX(WAIT) |
EX(WAIT) |
|||||||||
adbmodareaコマンドの実行 |
EX |
− |
− |
− |
− |
− |
− |
SR(WAIT) |
− |
− |
− |
|
adbexportコマンドの実行※11 |
SR |
− |
SR(WAIT)※3 |
− |
− |
− |
SR(WAIT) |
SR(WAIT) |
SR |
SR※7 |
SR |
|
adbmergechunkコマンドの実行 |
--concurrency-priorオプションを省略する場合 |
SR |
− |
SR(WAIT) |
EX |
− |
SR |
SU(WAIT) |
SR(WAIT) |
SR |
SR |
− |
--concurrency-priorオプションを指定する場合 |
SR |
− |
SR(WAIT) |
EX(WAIT) |
− |
SR |
PU(WAIT,後発検知)※20 |
SR(WAIT) |
SR |
SR |
− |
|
adbchgchunkcommentコマンドの実行※21 |
SR |
− |
SR(WAIT) |
EX |
− |
SR |
SR(WAIT) |
SR(WAIT) |
SR |
SR |
− |
|
EX(WAIT) |
||||||||||||
adbchgchunkstatusコマンドの実行 |
処理対象表がアーカイブマルチチャンク表の場合※21 |
SR |
− |
EX(WAIT) |
EX |
− |
SR |
EX(WAIT) |
SR(WAIT) |
SR |
SR |
− |
EX(WAIT) |
||||||||||||
上記以外の場合※21 |
SR |
− |
SR(WAIT) |
EX |
− |
SR |
PU(WAIT) |
SR(WAIT) |
SR |
SR |
− |
|
EX(WAIT) |
||||||||||||
adbarchivechunkコマンドの実行 |
SR |
− |
SR(WAIT)とEX(WAIT)※12,※13 |
SRとEX※12 |
− |
SR |
PUとEX(WAIT)※12,※13 |
SR(WAIT) |
SR |
SR |
− |
|
adbunarchivechunkコマンドの実行 |
SR |
− |
SR(WAIT) |
EX |
− |
SR |
EX(WAIT) |
SR(WAIT) |
SR |
SR |
− |
|
adbreorgsystemdataコマンドの実行 |
SR |
− |
SR(WAIT) |
− |
− |
EX |
PU |
SR(WAIT) |
SR |
− |
− |
|
adbclientdefmangコマンドの実行 |
SR |
− |
− |
− |
− |
− |
− |
SR(WAIT) |
− |
− |
− |
|
adbsyndictコマンドの実行 |
同義語辞書の登録,更新,または削除の場合 |
SR |
− |
− |
− |
− |
SR |
− |
− |
− |
− |
SR |
同義語辞書ファイルの同期,同義語一覧の出力,または不要なファイルの削除の場合 |
SR |
− |
− |
− |
− |
− |
− |
− |
− |
− |
SR |
|
adbaudittrailコマンドの実行 |
SR |
− |
− |
− |
− |
− |
− |
SR(WAIT) |
− |
− |
− |
|
adbconvertaudittrailfileコマンドの実行 |
SR |
− |
− |
− |
− |
− |
− |
SR(WAIT) |
− |
− |
− |
|
adbmodbuffコマンドの実行 |
SR |
− |
− |
− |
− |
− |
− |
− |
− |
− |
− |
|
adbmkdmkコマンドの実行 |
SR |
− |
− |
− |
− |
− |
− |
− |
− |
− |
− |
|
adbupddmkコマンドの実行 |
EX |
− |
− |
− |
− |
− |
− |
− |
− |
− |
− |
- (凡例)
-
−:排他資源を確保しません。
EX:占有モード(EX)で排他資源を確保します。
PU:保護更新モード(PU)で排他資源を確保します。
SU:共有更新モード(SU)で排他資源を確保します。
SR:共有参照モード(SR)で排他資源を確保します。
WAIT:排他資源を確保できるまで待ち状態になります。
後発検知:先発の処理に後発の処理があることが通知されます。先発の処理は,処理を中断して排他資源をいったん解放します。後発の処理は,先発の処理が確保している排他資源を確保できるまで待ち状態になります。
- 注
-
-
複数のトランザクションで同一の排他資源を確保しようとした場合の動作については,「2.10.1 排他制御モード」の「(2) 排他制御モードの同時実行の関係性(排他資源の確保の競合が発生したときの動作)」を参照してください。
-
排他資源「データベースアクセス」については,上記の表に記載していません。排他資源「データベースアクセス」の目的および機能については,「2.10.3 排他資源」を参照してください。
-
- 注※1
-
ビュー表の基表に対しては共有参照モード(SR)で排他を取得します。その際,排他資源を確保できない場合は,排他資源を確保できるまで待ち状態(WAIT)になります。
- 注※2
-
CREATE TABLE文を実行してマルチチャンク表を作成した場合,および,DROP TABLE文を実行してマルチチャンク表を削除した場合に,排他資源を確保します。
また,DROP SCHEMA文などの定義系SQLを実行して,処理の延長でマルチチャンク表が削除された場合にも,排他資源を確保します。
- 注※3
-
処理対象表がアーカイブマルチチャンク表の場合,処理対象表およびシステム表(STATUS_CHUNKS)に対する排他が確保されます。ただし,処理対象表に対してINSERT文を実行する場合は該当しません。
- 注※4
-
同一トランザクション内で,保持機能にHOLD_CURSORS_OVER_COMMITを指定して作成したResultSetオブジェクトがある場合,コミットしても排他資源は解放されません。そのResultSetオブジェクトをクローズしたあとに,コミットすると解放されます。なお,ロールバックした場合は排他資源は解放されます。
- 注※5
-
SQL文の実行時にエラーが発生した場合,そのトランザクションが確保した排他資源はトランザクションが終了するまで解放されません。
- 注※6
-
複数の排他資源を確保するトランザクションが,排他資源の競合によってエラーとなった場合,エラー発生前までに確保していた排他資源はそのトランザクションが終了するまで解放されません。
- 注※7
-
処理対象表がアーカイブマルチチャンク表のときだけ,排他資源を確保します。
- 注※8
-
PURGE CHUNK文の探索条件に副問合せを指定して実行した場合に,副問合せに含まれる表を指します。
- 注※9
-
マルチチャンク表に対して,-dオプションまたは-mオプションを指定してadbimportコマンドを実行したときだけ,排他資源を確保します。
- 注※10
-
バックグラウンドインポート機能を適用した(-bオプションを指定した)adbimportコマンドの中断後に,--create-temp-fileオプションを指定してadbidxrebuildコマンドを実行した場合を指します。
- 注※11
-
adbexportコマンドを実行すると,処理の延長で検索系SQLが実行されます。そのため,検索系SQLと同様の排他資源も確保されます。
- 注※12
-
adbarchivechunkコマンドによる処理の延長で,排他制御モードの遷移が発生します。排他制御モードの遷移後,占有モード(EX)で排他資源が確保されます。
- 注※13
-
adbarchivechunkコマンドの実行時に,排他制御モードの遷移が発生した場合は,遷移によって排他資源に対する確保待ちが発生することがあります。確保待ちが発生した場合,ほかのコネクションによる排他資源の確保が優先されることがあります。
- 注※14
-
前処理時は,共有参照モード(SR)で排他資源を確保します。その際,排他資源を確保できない場合は,排他資源を確保できるまで待ち状態(WAIT)になります。
実行時は,次のようになります。
-
処理対象のビュー表を定義したときのCREATE VIEW文にアーカイブマルチチャンク表を指定している場合
占有モード(EX)で排他資源を確保します。
-
上記以外の場合
占有モード(EX)で排他資源を確保します。その際,排他資源を確保できない場合は,排他資源を確保できるまで待ち状態(WAIT)になります。
-
- 注※15
-
更新対象表以外の表にアーカイブマルチチャンク表が含まれる場合は,前処理時に排他資源を確保します。それ以外の場合は,実行時に排他資源を確保します。
- 注※16
-
対象のコマンドを実行した場合に,排他資源を確保します。また,APがHADBサーバに接続した場合にも,排他資源を確保します。APがHADBサーバに接続した場合は,共有参照モード(SR)で排他資源を確保します。
- 注※17
-
処理対象表がマルチチャンク表のときだけ,排他資源を確保します。
- 注※18
-
ALTER VIEW文を実行すると,排他制御モードの遷移が発生します。排他制御モードの遷移後,占有モード(EX)で排他資源が確保されます。
- 注※19
-
adbdbstatusコマンドの対象がインデクスである場合は,インデクスが定義された表に対して排他を取得します。
adbdbstatusコマンドの対象がDBエリアである場合は,対象のDBエリアに格納された表,および対象のDBエリアに格納されたインデクスが定義されている表に対して,排他を取得します。
- 注※20
-
排他資源の確保時に待ち状態が発生した場合,ほかのコネクションのデータベース操作による排他資源の確保の追い越し(それに伴うデータベース操作の追い越し)が発生することがあります。
- 注※21
-
この行の情報が上下二段に分かれている場合,上段は,adb_sys_lck_conflict_behaviorオペランドにNOWAITを指定するか,またはadb_sys_lck_conflict_behaviorオペランドの指定を省略する場合の排他制御モードを示しています。下段は,adb_sys_lck_conflict_behaviorオペランドにWAITを指定する場合の排他制御モードを示しています。
- 注※22
-
REVOKE文の場合は,占有モード(EX)で排他資源を確保します。adb_sys_lck_conflict_behaviorオペランドにNOWAITを指定するか,またはadb_sys_lck_conflict_behaviorオペランドの指定を省略する場合と同じ排他制御になります。
- 注※23
-
次の定義系SQLを実行してビュー表を削除する場合,削除対象のビュー表に対しては占有モード(EX)で排他資源を確保します。adb_sys_lck_conflict_behaviorオペランドにNOWAITを指定するか,またはadb_sys_lck_conflict_behaviorオペランドの指定を省略する場合と同じ排他制御になります。
-
DROP VIEW文
-
DROP TABLE文
-
DROP SCHEMA文
-
DROP USER文
-
上記の表の見方を,検索系SQLを実行した場合を例にして説明します。
- 検索系SQLを実行した場合
-
アーカイブマルチチャンク表に対して検索系SQLを実行すると,次に示す排他資源を共有参照モード(SR)で確保します。
-
前処理表
-
処理対象表
-
ディクショナリ表
-
システム表(コスト情報)
-
システム表(チャンク情報)
-
システム表(同義語辞書情報)
上記の排他資源を,共有参照モード(SR),共有更新モード(SU),および保護更新モード(PU)で確保する処理は実行できます。例えば,adbgetcstコマンドは実行できます。
ただし,上記の排他資源を,占有モード(EX)で確保する処理は実行できません。例えば,定義系SQL,TRUNCATE TABLE文などは実行できません。
-