3.8.2 SDBデータベースを操作するAPIまたはDMLの実行時の排他資源数
SDBデータベースを操作するAPIまたはDMLの実行時に,バックエンドサーバで必要とする排他資源数の概算式を次に示します。
なお,SD FMBのSDBデータベースを操作する場合,SDB用UAP環境定義のsubschemaオペランドに指定するSD排他モードとアクセス目的の指定の組み合わせが次のどれかのときは,ページ(サブページ分割をしている場合はサブページ)に排他が掛かりません。
-
SD排他モードがprotectedで,アクセス目的がretrieveの場合
-
SD排他モードがexclusiveで,アクセス目的がretrieveの場合
-
SD排他モードがexclusiveで,アクセス目的がupdateの場合
-
SD排他モードがnonprotectedの場合
上記の条件に該当する場合は,ページの排他資源数は0として見積もってください。
- 〈この項の構成〉
(1) レコードの検索(FETCH),または位置指示子の位置づけ(FIND)
レコードの検索(FETCH),または位置指示子の位置づけ(FIND)をするときの排他資源数の概算式について説明します。
-
4V FMBまたは4V AFMのSDBデータベースをAPIで操作する場合
SDBデータベースを操作するAPIの排他モード2の指定によって,(a)または(b)の計算式で排他資源数を求めてください。
-
4V FMBまたは4V AFMのSDBデータベースをHiRDB/SDデータベースアクセスユティリティ(pdsdbexe)で操作する場合
STARTコマンドのAUTODEQオペランドにNOを指定しているとき,またはAUTODEQオペランドの指定を省略しているときは,(a)の計算式で排他資源数を求めてください。
AUTODEQオペランドにYESを指定しているときは,(b)の計算式で排他資源数を求めてください。
-
SD FMBのSDBデータベースをDML文,またはHiRDB/SDデータベースアクセスユティリティ(pdsdbexe)のDMLコマンドで操作する場合
SDB用UAP環境定義のlockrangeオペランドにtransactionを指定している場合,またはlockrangeオペランドを省略している場合は,(a)の計算式で排他資源数を求めてください。
lockrangeオペランドにcursorupdateを指定している場合は,(b)の計算式で排他資源数を求めてください。
(a) SDBデータベースを操作するAPIの排他モード2が'C'の場合
検索対象のレコード格納用RDエリア数+1 +検索ヒットレコード実現値格納ページ数※1 +利用するインデクスのインデクス格納用RDエリア数+1※2 +検索範囲キー値数※3+1※4
- 注※1
-
-
4V AFMのSDBデータベースで仮想ルートレコードの検索が発生する場合(該当データベースキー値に対する1回目のアクセス時)は2,それ以外は1を加算します。
ただし,SDBデータベースを操作するAPIの排他モード1に'N'(無排他モード)を指定する場合,またはTAMのデータベースの無排他検索機能が動作する場合は0を代入します。
-
サブページ分割をする場合は,「検索ヒットレコード実現値格納サブページ数」になります。
-
- 注※2
-
システム共通定義のpd_inner_replica_controlオペランドを指定している場合に加算します。
- 注※3
-
4V AFMのSDBデータベースで指定のRDエリアを検索範囲にする場合は,検索範囲開始キーから検索範囲終了キーまでのキー値数(検索開始から検索終了までの仮想ルートレコードのレコード実現値数)−1,それ以外は0を代入します。
なお,SDBデータベースを操作するAPIの排他モード1に'N'(無排他モード)を指定する場合,または4V TAMのSDBデータベースの場合は0を代入します。
- 注※4
-
SD FMBのSDBデータベースで,二次インデクスを使用して子レコードを検索する場合に加算します。
(b) SDBデータベースを操作するAPIの排他モード2が'D'の場合
検索対象のレコード格納用RDエリア数+1 +検索ヒットレコード実現値格納ページ数※1 +利用するインデクスのインデクス格納用RDエリア数+1※2
- 注※1
-
-
4V AFMのSDBデータベースで仮想ルートレコードの検索が発生する場合(該当データベースキー値に対する1回目のアクセス時,または4V AFMのSDBデータベースで指定のRDエリアを検索範囲としたとき)は2,それ以外は1を加算します。
-
サブページ分割をする場合は,「検索ヒットレコード実現値格納サブページ数」になります。
-
- 注※2
-
システム共通定義のpd_inner_replica_controlオペランドを指定している場合に加算します。
- 注意事項
-
SDBデータベースを操作するAPIまたはDMLの実行時には,不要なページまたはサブページの排他が解除されるため,確保している排他資源の総数を計算する場合には,単に積算しないでください。
また,SDBデータベースを操作するAPIの排他モード1に'N'(無排他モード)を指定する場合,TAMのデータベースの無排他検索機能が動作する場合,またはSDB用UAP環境定義のsubschemaオペランドの-eオプションにnonprotectedを指定している場合は,排他自動解除機能が適用されないため,「3.8.2(1)(a) SDBデータベースを操作するAPIの排他モード2が'C'の場合」の計算式を参照してください。
排他自動解除機能については,「2.9.4 排他自動解除機能」を参照してください。
(2) レコードの格納(STORE)
一括削除後にレコードを格納する場合,削除前の一連番号の最大値に達するまでは,内部的にレコードの更新(MODIFY)と同等の変更処理に置き換わります。その場合の排他資源数は「3.8.2(2)(a) 一括削除したあとにレコードを格納する場合」を参照してください。それ以外の場合の排他資源数は「3.8.2(2)(b) 一括削除しないでレコードを追加する場合」を参照してください。
(a) 一括削除したあとにレコードを格納する場合
4+利用するインデクスのインデクス格納用RDエリア数※1+1※2+1※3
- 注※1
-
二次インデクスが定義されたレコードの格納の場合は,2を加算します。
それ以外の場合は,1を加算します。
- 注※2
-
システム共通定義のpd_inner_replica_controlオペランドを指定している場合に加算します。
- 注※3
-
レコードの削除によって,当該データベースキー値を持つ子レコードが0件になったあとに実行する,1件目のレコードの格納の場合に加算します。
(b) 一括削除しないでレコードを追加する場合
格納対象RDエリア数※1+4+5※2 +インデクスが定義された格納レコード実現値数※3+1※4+(事前割り当てページ数−1)※5+1※6
- 注※1
-
対象となるレコード型,インデクスが格納されているRDエリアの総数です。
- 注※2
-
直前および直後の子レコードがない場合は,その分減算します。また,親レコードがルートレコードの場合は1を,ルートレコードの追加の場合は2を減算します。
- 注※3
-
次の値を代入してください。
-
4V FMBまたはSD FMBのSDBデータベースでルートレコードの格納の場合:1
-
4V FMBのSDBデータベースで二次インデクスが定義された子レコードの格納の場合:1
-
4V AFMのSDBデータベースで二次インデクスが定義されたレコードの1件目の格納の場合:2
レコードの削除によって,当該データベースキー値を持つ子レコードが0件となったあとに実行する1件目のレコードの格納を含みます。
-
4V AFMのSDBデータベースで二次インデクスが定義されたレコードの2件目以降の格納の場合:1
-
4V AFMのSDBデータベースで二次インデクスが定義されていないレコードの1件目の格納の場合:1
レコードの削除によって,当該データベースキー値を持つ子レコードが0件となったあとに実行する1件目のレコードの格納を含みます。
-
それ以外の場合:0
-
- 注※4
-
システム共通定義のpd_inner_replica_controlオペランドを指定している場合に加算します。
- 注※5
-
-
該当するファミリに事前ページ割り当て機能を適用している場合,確保予定の事前割り当てページの数を加算します。なお,このレコードの格納でレコード実現値を格納するページ分については,加算済みであるため,1を減算しています。
-
サブページ分割をする場合は,「(事前割り当てサブページ数−1)」になります。
-
- 注※6
-
システム共通定義のpd_lock_uncommited_delete_dataオペランドにWAITを指定し,かつ4V FMBまたはSD FMBのSDBデータベースの場合に加算します。
(3) レコードの更新(MODIFY)
更新対象RDエリア数※4+1+変更レコード実現値格納ページ数※1+1※2+1※3+1※5
- 注※1
-
-
次に示す値を加算します。
・ユーザデータの変更だけの場合:1
・USERポインタの設定だけの場合:2
・USERポインタの設定の解除だけの場合:1
・ユーザデータの変更と,USERポインタの設定または設定の解除を同時に実行する場合:2
-
サブページ分割をする場合は,「変更レコード実現値格納サブページ数」になります。
-
- 注※2
-
システム共通定義のpd_inner_replica_controlオペランドを指定している場合に加算します。
- 注※3
-
ユーザデータの変更だけを行う場合,対象レコードがルートレコード以外であれば加算します。
USERポインタの設定または設定の解除を行う場合,親レコードがルートレコード以外であれば加算します。
- 注※4
-
-
4V FMBまたは4V AFMのSDBデータベースの場合
1を加算します。
-
SD FMBのSDBデータベースの場合
対象となるレコード型および二次インデクスを格納するRDエリアの総数を加算します。
-
- 注※5
-
SD FMBのSDBデータベースで,二次インデクスを定義したレコードを更新する場合に加算します。
(4) レコードの削除(ERASE)
削除対象RDエリア数※1+1+削除レコード実現値格納ページ数※2+4※3+1※4 +削除レコード実現値数※5+1※6+未使用の事前割り当てページ数※7
- 注※1
-
対象となるレコード型,インデクスが格納されているRDエリアの総数です。
- 注※2
-
サブページ分割をする場合は,「削除レコード実現値格納サブページ数」になります。
- 注※3
-
直前および直後の子レコードがない場合は,その分減算します。また,親レコードがルートレコードの場合は1を減算します。
- 注※4
-
システム共通定義のpd_inner_replica_controlオペランドを指定している場合に加算します。
- 注※5
-
インデクスが定義されたレコード実現値を削除する場合に加算します。
- 注※6
-
4V AFMのSDBデータベースで,当該データベースキー値を持つ子レコードが0件になる場合に加算します。
- 注※7
-
-
削除対象レコードがルートレコードであり,該当するファミリを格納するために事前割り当てページを確保している場合,レコードが格納されていない事前割り当てページ数を加算します。
-
サブページ分割をする場合は,「未使用の事前割り当てサブページ数」になります。
-
(5) レコードの一括削除【4V DAM,4V SAM】
削除対象のレコード格納用RDエリア数+3+1※ +利用するインデクスのインデクス格納用RDエリア数
- 注※
-
システム共通定義のpd_inner_replica_controlオペランドを指定している場合に加算します。
(6) 複数レコードの検索(FETCHDB ALL)【4V FMB】
検索対象RDエリア数※1+1 +1※2 +1※3
- 注※1
-
前回の複数レコードの検索で取得したファミリの,続きのレコードを取得する場合は1(レコードを格納するRDエリア分),それ以外は2(レコードを格納するRDエリアおよびシーケンシャルインデクスを格納するRDエリア分)を加算します。
- 注※2
-
前回の複数レコードの検索で取得したファミリの,続きのレコードを取得する場合は0とします。
- 注※3
-
システム共通定義のpd_inner_replica_controlオペランドを指定している場合に加算します。
(7) 構成情報取得【4V AFM】
構成情報取得対象のレコード格納用RDエリア数+1+2※1 +利用するインデクスのインデクス格納用RDエリア数+1※2
- 注※1
-
対象の仮想ルートレコードが1つしか存在しない場合は,1となります。
また,SDBデータベースを操作するAPIの排他モード1に'N'(無排他モード)を指定する場合,またはTAMのデータベースの無排他検索機能が動作する場合は0となります。
- 注※2
-
システム共通定義のpd_inner_replica_controlオペランドを指定している場合に加算します。