Hitachi

ノンストップデータベース HiRDB Version 10 構造型データベース機能


3.8.2 SDBデータベースを操作するAPIまたはDMLの実行時の排他資源数

SDBデータベースを操作するAPIまたはDMLの実行時に,バックエンドサーバで必要とする排他資源数の概算式を次に示します。

なお,SD FMBのSDBデータベースを操作する場合,SDB用UAP環境定義のsubschemaオペランドに指定するSD排他モードとアクセス目的の指定の組み合わせが次のどれかのときは,ページ(サブページ分割をしている場合はサブページ)に排他が掛かりません。

上記の条件に該当する場合は,ページの排他資源数は0として見積もってください。

〈この項の構成〉

(1) レコードの検索(FETCH),または位置指示子の位置づけ(FIND)

レコードの検索(FETCH),または位置指示子の位置づけ(FIND)をするときの排他資源数の概算式について説明します。

(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オペランドを指定している場合に加算します。