Hitachi

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


2.7.2 レコードを格納するサブページの決定方法

レコードを格納するには,次の2つの方法があります。

各方法でのレコードを格納するサブページの決定方法について説明します。

参考
  • SDBデータベースを操作するAPIについては,マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。

  • DMLについては,「17.DMLリファレンス【SD FMB】」を参照してください。

〈この項の構成〉

(1) SDBデータベースを操作するAPIまたはDMLでレコードをサブページに格納する場合

SDBデータベースを操作するAPIまたはDMLでレコードを格納する場合,そのファミリに事前ページ割り当て機能を適用しているかどうかによって,格納するサブページの使用順序が異なります。事前ページ割り当て機能については,「(4) 事前ページ割り当て機能【4V FMB】」を参照してください。

(a) 事前ページ割り当て機能を適用していない場合

事前ページ割り当て機能を適用していない場合,次の表に示す優先順位に従って格納するサブページを決定します。優先順位1〜6のサブページにレコードを格納できない場合,RDエリアのページ不足となります。

表2‒26 SDBデータベースを操作するAPIまたはDMLでレコードを格納する場合の優先順位(事前ページ割り当て機能を適用していない場合)

優先順位

レコード種別

ルートレコード

2階層以上のレコード

1

未使用サブページ

基準サブページ

2

基準サブページが属するページ内のファミリ内接続サブページ

3

基準サブページが属するページ内の未使用サブページ

4

基準サブページが属するページのセグメントおよびその直前のセグメント内の未使用サブページ

5

優先順位4以外の未使用サブページ

6

優先順位2以外の全ファミリ内接続サブページ

(凡例)

−:該当しません。

注※

サブページ切り替えの指定がある場合,格納の対象になりません。サブページ切り替えについては,「2.7.2(3) レコード格納時のサブページ切り替え【4V FMB,4V AFM】」を参照してください。

優先順位に従った2階層以上のレコードの格納時の動作を次の図に示します。

図2‒77 優先順位に従った2階層以上のレコードの格納時の動作(事前ページ割り当て機能を適用していない場合)

[図データ]

[図データ]

(b) 事前ページ割り当て機能を適用している場合【4V FMB】

4V FMBのSDBデータベースのルートレコードを格納する場合,指定数分の事前割り当てサブページを確保し,最初に確保した事前割り当てサブページを使用します。また,2階層以上のレコードを格納する場合,基本的には確保済みの事前割り当てサブページを使用します。ただし,確保済みの事前割り当てサブページ内にレコードを格納できる空き領域がない場合は,指定数分の事前割り当てサブページを追加で確保し,最初に確保した事前割り当てサブページを使用します。

事前ページ割り当て機能を適用している場合,次の表に示す優先順位に従って,格納するサブページを決定します。優先順位1〜7のサブページにレコードを格納できない場合,RDエリアのページ不足となります。

表2‒27 SDBデータベースを操作するAPIでレコードを格納する場合の優先順位(事前ページ割り当て機能を適用している場合)

優先順位

レコード種別

ルートレコード

2階層以上のレコード

1

未使用サブページ※1

基準サブページ

2

基準サブページから関連づけられている,同一ページ内のファミリ内接続サブページ

3

優先サブページ※2

4

優先サブページから関連づけられている,同一ページ内の事前割り当てサブページ

5

優先順位1〜4以外の事前割り当てサブページ

6

最終事前割り当てサブページが属するページ内の未使用サブページ※1

7

基準サブページが属するページのセグメント,およびその直前のセグメント内の未使用サブページ※1

8

優先順位6および7以外の未使用サブページ※1

(凡例)

−:該当しません。

注※1

事前割り当てサブページとして確保します。

注※2

基準サブページが属するページの次にHiRDB/SDが優先的に格納を試みる事前割り当てサブページです。

優先順位に従った2階層以上のレコードの格納時の動作を次の図に示します。

図2‒78 優先順位に従った2階層以上のレコードの格納時の動作(事前ページ割り当て機能を適用している場合)

[図データ]

[図データ]

(2) HiRDB/SDデータベース作成ユティリティ(pdsdblod)でレコードをサブページに格納する場合

HiRDB/SDデータベース作成ユティリティ(pdsdblod)でレコードをサブページに格納する場合,次の表に示す優先順位に従って,格納するサブページを決定します。優先順位1〜2のサブページにレコードを格納できない場合,RDエリアのページ不足となります。

表2‒28 HiRDB/SDデータベース作成ユティリティ(pdsdblod)でレコードをサブページに格納する場合の優先順位

レコード種別

優先順位

1

2

ルートレコードの格納

未使用サブページ

2階層以上のレコードの格納

直近でレコードを格納したサブページ

未使用サブページ

(凡例)

−:該当しません。

注※

サブページ切り替えの指定がある場合,格納の対象になりません。サブページ切り替えについては,「(3) レコード格納時のサブページ切り替え【4V FMB,4V AFM】」を参照してください。

(3) レコード格納時のサブページ切り替え【4V FMB,4V AFM】

レコード格納時のサブページ切り替えについて説明します。サブページ切り替えは,4V FMBまたは4V AFMのSDBデータベースの場合に指定できます。

(a) サブページ切り替えの概要

4V FMBまたは4V AFMのSDBデータベースにレコードを格納する際,格納対象のサブページを切り替えて,未使用サブページにレコードを格納できます。これをサブページ切り替えといいます。また,このとき,格納したレコードだけでそのサブページを占有し,ほかのレコードが格納されないようにすることもできます。格納対象のサブページを切り替えることによって,レコードに対するアクセスをサブページ単位に分散し,排他の競合を回避できます。

サブページ切り替えの指定には,次の2つの指定があります。

  • 切り替え指定

    切り替えたサブページにほかのレコードも格納できる指定

  • 占有指定

    切り替えたサブページを格納するレコードで占有する指定(ほかのレコードは格納できない指定)

サブページ切り替えの指定方法を次の表に示します。

表2‒29 サブページ切り替えの指定方法

格納方法

指定方法

HiRDB/SDデータベース作成ユティリティ(pdsdblod)

フォーマットライト機能使用時

dbinf文のpagecflgでページ切り替えフラグを指定します。dbinf文については,「12.3.3 dbinf文【4V FMB,4V AFM】」を参照してください。

上記以外

入力データファイルのプレフィクス部のページ切り替えフラグを指定します。詳細については,「12.3.3 dbinf文【4V FMB,4V AFM】」を参照してください。

SDBデータベースを操作するAPIによるレコード格納

SDBデータベースを操作するAPIに,ページ切り替えオプションを指定することによって,レコードの格納時にサブページを切り替えることができます。

'C'指定(切り替え指定)

レコード格納時にサブページを切り替え,未使用サブページを確保します。確保したサブページにほかのレコードを格納できます。

'O'指定(占有指定)

レコード格納時にサブページを切り替え,未使用サブページを確保します。確保したサブページは格納したレコードで占有します。ほかのレコードは格納できません。

'N'または'△'(空白)指定

サブページの切り替えを指定しません。

SDBデータベースを操作するAPIについては,マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。

(b) サブページ切り替えに関する留意事項

  • 4V AFMのSDBデータベースの場合,仮想ルートレコードの格納時に,SDBデータベース格納定義のOCCURRENCE NUMBER句の指定値が1以上のレコードでは,仮想ルートレコードにアクセスする際の排他と,同一仮想ルートレコード下の子レコードにアクセスする際の排他の競合を回避するため,サブページ切り替えの指定が無視されます。このとき,'O'が指定されたと仮定してレコードが格納されます。

    子レコードの格納時には,サブページ切り替えの指定に従ってレコードが格納されます。

  • レコードの一括削除後にレコードを格納する場合,一括削除時に存在していたレコードの格納領域が再利用されます。そのため,一括削除時に存在していたレコード件数分のレコードを格納するときには,ページ切り替え指定は無視されます。

  • HiRDB/SDは,異なるルートレコード下のレコードをサブページ内に混在させないため,ルートレコードの格納時にサブページを切り替えます。そのため,ルートレコード格納時の'C'指定,または指定なしの場合については,動作に違いはありません。'O'指定の場合には,ルートレコードだけで格納サブページを占有するため,ほかのレコードは格納されません。

  • ページ切り替え指定に従ってレコード格納時にサブページを切り替えた場合,確保したサブページと基準サブページとの間で,サブページ間の関連づけはされません。そのため,ページ切り替え指定以前に作成されていたサブページは,確保したサブページのファミリ内接続サブページとはなりません。

    同一ルートレコード下のレコード格納サブページであっても,異なるファミリ内接続サブページに分割された場合には,「表2-26 SDBデータベースを操作するAPIまたはDMLでレコードを格納する場合の優先順位(事前ページ割り当て機能を適用していない場合)」の優先順位2および6の対象サブページとはなりません。ただし,サブページの切り替え後にレコードを格納することによって作成されたサブページ間は関連づけられるので,新たなファミリ内接続サブページとなります。サブページ間の関連づけ,ファミリ内接続サブページについては,「2.7.1(2) サブページ間の関連づけとファミリ内接続サブページ」を参照してください。

  • 基準レコードが'O'指定でサブページを占有しているレコードの場合であっても,ページ切り替え指定なしで未使用サブページを確保できているときには,確保したサブページと基準サブページとが関連づけられます。

  • 事前ページ割り当て機能を適用しているファミリのレコードを格納する場合,サブページ切り替え指定でサブページを切り替えることはできません。サブページ切り替えの指定があるとエラーになります。事前ページ割り当て機能については,「(4) 事前ページ割り当て機能【4V FMB】」を参照してください。

(c) ページ切り替えオプションによるレコードの格納例

4V FMBのSDBデータベースの場合

4V FMBのSDBデータベースに対するレコードの格納時の,ページ切り替えオプションによるレコードの格納例を次の図に示します。

図2‒79 ページ切り替えオプションによるレコードの格納例(4V FMBのSDBデータベースの場合)

[図データ]

[図データ]

OCCURRENCE NUMBER句に1以上を指定している4V AFMのSDBデータベースの場合

SDBデータベース格納定義のOCCURRENCE NUMBER句に1以上を指定している4V AFMのSDBデータベースに対するレコードの格納時の,ページ切り替えオプションによるレコードの格納例を次の図に示します。

図2‒80 ページ切り替えオプションによるレコードの格納例(OCCURRENCE NUMBER句に1以上を指定している4V AFMのSDBデータベースの場合)

[図データ]

[図データ]

OCCURRENCE NUMBER句に0を指定している4V AFMのSDBデータベースの場合

SDBデータベース格納定義のOCCURRENCE NUMBER句に0を指定している4V AFMのSDBデータベースに対するレコードの格納時の,ページ切り替えオプションによるレコードの格納例を次の図に示します。

図2‒81 ページ切り替えオプションによるレコードの格納例(OCCURRENCE NUMBER句に0を指定している4V AFMのSDBデータベースの場合)

[図データ]

(d) 適用基準

レコードに対するアクセス時の排他をサブページ単位で分散させたい場合,'O'指定または'C'指定を選択します。同時実行性は次の順に高くなります。

  1. 'O'指定(占有指定)(同時実行性がいちばん高い)

  2. 'C'指定(切り替え指定)

  3. ページ切り替え指定なし

ただし,次の場合は指定による同時実行性の差異はありません。

  • 4V FMBのSDBデータベースの場合(ルートレコードの格納サブページの排他によって,ルートレコード下のレコード群のアクセスがシリアライズされるため)

  • 4V AFMのSDBデータベースで,SDBデータベース格納定義のOCCURRENCE NUMBER句の指定が0の場合(仮想ルートレコード下に子レコードが最大1件しか存在しないため)

なお,サブページ切り替えをすることによってデータベース容量が増大することがあるので注意してください。一般的に次の順でデータベース容量は増加します。

  1. ページ切り替え指定なし(データベース容量がいちばん少ない)

  2. 'C'指定(切り替え指定)

  3. 'O'指定(占有指定)

SDBデータベース種別ごとに推奨する指定を次の表に示します。作成するデータベースや格納するレコードの特性に合わせて指定を決定してください。

表2‒30 SDBデータベース種別ごとに推奨する指定

SDBデータベース種別

サブページ切り替えで推奨する指定※1

備考

4V FMB

指定なし

ルートレコードの格納サブページの排他によって,ルートレコード下のレコードのアクセスがシリアライズされるため,'O'指定または'C'指定に同時実行性を向上させる効果はありません。

4V DAM

OCCURRENCE NUMBER句の指定が0

指定なし

仮想ルートレコード下に子レコードが最大1件しか存在しないため,'O'指定または'C'指定に同時実行性を向上させる効果はありません。

OCCURRENCE NUMBER句の指定が1以上

指定なし

または'O'指定(占有指定)※2

指定なしの場合,サブページに格納するレコード件数を制限し,排他の影響範囲を局所化したいときには,SDBデータベース格納定義のPCTFREE句を指定します。

サブページに1件だけレコードを格納する場合には'O'指定とします。

4V MAM

'O'指定(占有指定)※2

4V MAMのSDBデータベースは一般的に同時実行性が求められます。

4V TAM

'O'指定(占有指定)※2

4V TAMのSDBデータベースは一般的に同時実行性が求められます。

4V SAM

指定なし

4V SAMのSDBデータベースは一般的に同時実行性が求められません。

注※1

データベース単位で,すべてのレコードに一律同じ指定をする場合の推奨値です。格納するレコードの特性やレコードの件数などがわかっている場合は,レコード単位に指定を切り替えることで,格納配置をより詳細に制御できます。レコード単位の指定の切り替えによるレコードの配置例については,「(e) ページ切り替え指定によるレコードの配置例」を参照してください。

注※2

参照しかしないデータベースの場合や,ほかのトランザクションが存在しない状態で,更新処理を単独で実行するような場合には,サブページ排他での排他待ちが発生しないため,「指定なし」を推奨します。この場合,サブページに格納するレコード件数を制限し,排他の影響範囲を局所化する目的でPCTFREE句を指定する必要はありません。

(e) ページ切り替え指定によるレコードの配置例

アクセス頻度によってページ切り替え指定を使い分ける

4V DAMのSDBデータベースなどで,アクセス頻度が高く同時実行性が要求されるレコードに対してだけ'O'指定をするというように指定を使い分けると,同時実行性を確保しながらデータベース容量を小さく抑えるといった,データベース設計ができます。アクセス頻度によってページ切り替え指定を使い分ける例を次の図に示します。この例では仮想ルートレコード2下のレコードだけ'O'指定をしています。

図2‒82 アクセス頻度によってページ切り替え指定を使い分ける例

[図データ]

論理的に関連するレコードの格納位置をまとめる

4V FMBのSDBデータベースで,データベース初期作成後のレコードの格納に備えて'C'指定をしておくことで,論理的に関連するレコードを同一サブページに格納するといった,データベース設計ができます。

論理的に関連するレコードの格納位置をまとめる例を次の図に示します。この例では孫レコードを格納するための領域をページ切り替え指定によって確保しておくことで,同一子レコード下の孫レコードを同一サブページに格納しています。

図2‒83 論理的に関連するレコードの格納位置をまとめる例

[図データ]

(4) 事前ページ割り当て機能【4V FMB】

サブページ分割をする4V FMBのSDBデータベースのファミリに,事前ページ割り当て機能を適用すると,サブページが事前割り当てサブページとして確保されます。

事前ページ割り当て機能は,4V FMBのSDBデータベースの場合に使用できます。

(a) 事前ページ割り当て機能の概要

HiRDB/SDデータベース作成ユティリティ(pdsdblod),またはSDBデータベースを操作するAPIで4V FMBのSDBデータベースにルートレコードを格納する場合,事前割り当てサブページ数を指定すると,指定したファミリにあらかじめ指定数分の連続したデータページ(事前割り当てサブページ)が確保されます。

HiRDB/SDデータベース作成ユティリティ(pdsdblod)での指定方法については,次の説明を参照してください。

SDBデータベースを操作するAPIによるレコードの格納(STORE)での,事前割り当てサブページ数の指定方法については,マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。

SDBデータベースを操作するAPIの実行時には次の制御を行うため,2階層以上のレコードの格納およびレコードの削除を繰り返し実行した場合でも,ファミリ単位に連続したデータページ内へのレコードの配置を維持できます。

  • 2階層以上のレコードの格納時に,事前割り当てサブページ内にレコードを格納できる空き領域がある場合,その空き領域にレコードが格納されます。

  • 2階層以上のレコードの削除によって,事前割り当てサブページ内のレコードがすべて削除された場合でも,事前割り当てサブページは解放されないで,2階層以上のレコードの格納時に再利用されます。

この配置制御によって,特定のファミリに連続してアクセスする場合にI/O回数の削減が見込まれるため,SDBデータベースを操作するAPIを繰り返し実行しても,一定のアクセス性能を維持できます。

2階層以上のレコードの格納時に,事前割り当てサブページ内にレコードを格納できる空き領域がない場合,追加で事前割り当てサブページが確保されます。このときに確保される事前割り当てサブページの数は,該当するレコードの格納時の事前割り当てサブページ数の指定に従います。事前割り当てサブページ不足が発生していない場合,または事前ページ割り当て機能を適用していない場合,その指定は無視されます。

なお,事前割り当てサブページ数に0を指定した場合は1を指定したときと同じく,格納対象のレコードを格納するサブページだけが確保されます。

(b) 事前割り当てサブページ数の引き継ぎ

確保済みの事前割り当てサブページの数は,次の表に示す機能で取得できます。

表2‒31 事前割り当てサブページ数を取得できる機能

事前割り当てサブページ数を取得できる機能

機能概要

HiRDB/SDデータベース再編成ユティリティ(pdsdbrog)

アンロード時,ファミリ単位に確保済みの事前割り当てサブページの数がアンロードデータファイルのプリフィクス部に設定されます。

事前割り当てページ数の取得方法については,次の説明を参照してください。

レコードの検索(FETCH)

ルートレコードの検索時に確保済みの事前割り当てサブページの数が返却されます。2階層以上のレコードだけを検索した場合は0が返却されます。また,事前ページ割り当て機能を適用していないファミリを検索した場合にも0が返却されます。

SDBデータベースを操作するAPIでの事前割り当てページ数の取得方法については,マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。

複数レコードの検索(FETCHDB ALL)

これによって,次の場合に事前割り当てサブページ数を引き継ぐことができます。

  1. SDBデータベースの再編成時

  2. 異なるSDBデータベース間のデータ移行時

事前割り当てサブページ数の引き継ぎ例を次の図に示します。

図2‒84 事前割り当てサブページ数の引き継ぎ例

[図データ]

(c) 事前ページ割り当て機能の適用条件

事前ページ割り当て機能は,次の機能と同時に適用できません。

  • サブページ切り替え

  • SDBデータベース格納定義のPCTFREEオペランド,またはHiRDB/SDデータベース作成ユティリティ(pdsdblod)のenvironment文のrecfreeオペランドで指定する空き領域の作成

(d) 事前ページ割り当て機能に関する留意事項

  • 確保できる事前割り当てサブページ数の上限値は,1ファミリ当たり2,147,483,647です。サブページ分割をしている場合,ファミリを格納するために必要な事前割り当てサブページ数がこの上限値を超える可能性があります。その場合はエラーになるため,次のどちらかの対応が必要です。

    • SDBデータベース格納定義のSTORAGE RECORD句で指定しているSUBPAGE NUMBER句の指定値を小さくします。これによって,1サブページ当たりに格納できるレコード件数を増やすことができます。その結果,該当するファミリを格納するために必要なサブページの数を上限値以下にできます。

    • SDBデータベース格納定義のSTORAGE RECORD句で指定しているSUBPAGE NUMBER句の指定を省略することで,サブページ分割をしないようにします。

  • HiRDB/SDデータベース作成ユティリティ(pdsdblod)でレコードを格納する場合,次のように動作します。

    • 事前ページ割り当て機能を適用するファミリにサブページ切り替えの指定がある場合,論理エラーになります。

    • 事前割り当てサブページが属するページを確保する際,セグメント内の空きページの比率の指定は無視されるため,事前割り当てサブページが属するページ間に空きページは確保されません。通常のサブページが属するページを確保する際に空きページは確保されますが,同じセグメント内に事前割り当てサブページが属するページが含まれる場合,通常は指定したセグメント内の空きページの比率にはなりません。この場合のセグメント内の空きページの比率については,「3.2.6(4)(b) 未使用領域および空きページの作成に関する留意事項」を参照してください。

    • 事前割り当てサブページにレコードを格納する際,サブページ内の未使用領域の比率は無視されるため,レコードが詰めて格納されます。

  • SDBデータベースを操作するAPIでレコードを格納する場合,次のように動作します。

    • 事前ページ割り当て機能を適用しているファミリのレコードを格納する際に,サブページ切り替えの指定があるとエラーになります。

    • 事前ページ割り当て機能を適用しているファミリのレコードを格納する際に,PCTFREE有効化オプションを適用するとエラーになります。

  • データロード時にレコードを格納するために確保したサブページの数が,指定した事前割り当てサブページ数を超えた場合,該当するファミリを格納するために指定値を超えて確保したサブページも,事前割り当てサブページとして扱われます。

  • 次のどれかの場合,事前ページ割り当て機能を適用しても非連続のデータページ,または非連続の事前割り当てサブページが確保されることがあります。

    1. 空きページが散在しているSDBデータベースに対して,追加データロードまたはSDBデータベースを操作するAPIによるルートレコードの格納を実行し,事前割り当てサブページが確保される場合

    2. SDBデータベースを操作するAPIによる2階層以上のレコードの格納時に,事前割り当てサブページ不足が発生し,追加で事前割り当てサブページが確保される場合

    3. SDBデータベースを操作するAPIによるレコードの格納時の事前割り当てサブページの確保中に,ほかのトランザクションによるサブページの確保が割り込む場合

    追加データロード時に,非連続のデータページ内のサブページが事前割り当てサブページとして確保される例(1.の例)を次の図に示します。この図では,初期データロード時に確保した空きページを事前割り当てサブページが属するページとして確保する例を示しています。

    図2‒85 追加データロード時の非連続データページ(事前割り当てサブページが属するページ)の確保例

    [図データ]

    なお,SDBデータベースを操作するAPIのレコードの削除によってページが解放され,未使用ページが存在する状態で追加データロードを実行した場合でも,そのページが再利用されることで,同様に非連続のデータページが確保されることがあります。ただし,次の場合,この状態はpdsdblodコマンドまたはSDBデータベースを操作するAPIを実行する前の,使用中の最終セグメントでだけ発生します。

    • 追加データロード時

    • 新規にセグメントを確保できる状況での,SDBデータベースを操作するAPIによるルートレコードの格納時

    事前割り当てサブページ不足発生時に,非連続の事前割り当てサブページが確保される例(2.の例)を次の図に示します。

    図2‒86 事前割り当てサブページ不足発生時の非連続の事前割り当てサブページの確保例

    [図データ]

    この図では,データページは連続していますが,1サブページずつ追加しているため,本来は各ファミリが2ページずつに収まるところが,3ページにまたがっています。このような状況でファミリ内のレコードすべてにアクセスする場合,I/O回数が増加してしまいます。この問題は,一定量の事前割り当てサブページを一括して確保することで緩和できます。

    非連続のデータページが事前割り当てサブページが属するページとして確保されているかどうかは,データベース状態解析ユティリティ(pddbst)で確認できます。

    この問題を解消するには,SDBデータベースを再編成する必要があります。

  • 確保する事前割り当てサブページの数に比例して,レコードの格納性能は低下します。そのため,事前割り当てサブページの連続性とレコードの格納性能を考慮して,指定する事前割り当てサブページ数を決定する必要があります。ただし,ルートレコードを格納する際には,事前割り当てサブページの連続性を優先させ,ファミリ内のすべてのレコードを格納できるだけの事前割り当てサブページを一括して確保することを推奨します。

  • 事前割り当てサブページを確保する際,基本的には使用中の最終セグメント,または新規に確保したセグメント内の空きページが使用されます。これらのセグメントから空きページを確保できなくなると,それ以外の使用中のセグメントから空きページが確保されます。このとき,次のようなケースでは,レコードの格納性能が大きく低下します。

    • 空きページが散在している。

    • 空きページを持たないセグメントが多数存在する。

    空きページのサーチ例については,「図2-69 空きページのサーチ例」を参照してください。

    このような場合,次のどちらかの対応が必要です。

    • HiRDB/SDデータベース再編成ユティリティ(pdsdbrog)とHiRDB/SDデータベース作成ユティリティ(pdsdblod)で,SDBデータベースを再編成します。

    • データベース構成変更ユティリティ(pdmod)で,レコード格納用RDエリアを拡張します。

    図2-69 空きページのサーチ例」に示した空きページのサーチが動作して,レコードの格納性能が低下する前に,上記の対応をすることを推奨します。そのためには,システム共通定義のpd_rdarea_warning_pointオペランドを指定します。これによって,次のメッセージが出力されるため,RDエリアの使用状況を監視できます。

    ・RDエリアのセグメント使用率通知メッセージ(KFPH00211-IまたはKFPA12300-I)

    ・増分するHiRDBファイルの領域使用率通知メッセージ(KFPH22037-W)

    詳細については,マニュアル「HiRDB システム定義」のpd_rdarea_warning_pointオペランドの説明を参照してください。

  • SDBデータベースを再編成するときに,事前割り当てサブページ数を変更したい場合は,事前割り当てサブページ数を指定し直す必要があります。

  • 更新可能なオンライン再編成時に,事前ページ割り当て機能の適用有無を変更した場合,ルートレコード配下のレコードの格納(STORE)に対する更新追い付き反映処理は次のように動作します。

    適用ありから適用なしに変更した場合

    事前割り当てサブページ数の指定は無視し,0が指定されたものとして動作します。

    適用なしから適用ありに変更した場合

    • 事前割り当てサブページ不足発生時,事前割り当てサブページ数の指定値として0が指定されたものとして動作するため,1サブページだけ確保されます。

    • 次のオプションの指定は無視され,X'00'が指定されたものとして動作します。

      ・ページ切り替えオプション

      ・PCTFREE有効化オプション

  • 更新可能なオンライン再編成時の追い付き反映処理では,SDBデータベースを操作するAPIによるレコードの格納時に指定した事前割り当てサブページ数の指定値を引き継ぎます。オンライン(レプリカRDエリア)側と再編成(オリジナルRDエリア)側では,サブページの使用状況が異なるため,追い付き反映処理後に確保済みの事前割り当てサブページの数が一致しないことがあります。更新可能なオンライン再編成の追い付き反映処理での事前割り当てサブページ数の引き継ぎ例を次の図に示します。

    図2‒87 更新可能なオンライン再編成の追い付き反映処理での事前割り当てサブページ数の引き継ぎ例

    [図データ]

    なお,上記と同様にサブページの使用状況が変わるため,SDBデータベースの再編成によって,確保済みの事前割り当てサブページの数が増加することがあります。

  • 図2-87 更新可能なオンライン再編成の追い付き反映処理での事前割り当てサブページ数の引き継ぎ例」に示したように,SDBデータベースを操作するAPIによるレコードの格納に対する追い付き反映処理によって,事前割り当てサブページが追加で確保された場合,オンライン(レプリカRDエリア)側のトランザクションがロールバックしても,その追加された事前割り当てサブページは解放されません。なお,SDBデータベースを操作するAPIによるルートレコードの格納時に確保された事前割り当てサブページの場合は解放されます。

(e) 事前ページ割り当て機能を適用したファミリの格納例

データロード時に事前ページ割り当て機能を適用したファミリと適用していないファミリの格納例を次の図に示します。

図2‒88 事前ページ割り当て機能の適用有無の違いによるファミリの格納例(サブページ分割をする場合)

[図データ]

[図データ]

このように,事前ページ割り当て機能を適用しているファミリの場合は,事前割り当てサブページ内にレコードを格納できる空き領域があるときは,その空き領域を再利用してレコードが格納されます。事前ページ割り当て機能を適用していないファミリの場合は,確保済みのサブページ内にレコードを格納できる空き領域があっても,その空き領域を再利用しないで,未使用サブページを確保してレコードが格納されることがあります。

なお,事前割り当てサブページ不足が発生し,追加で事前割り当てサブページが確保される場合の格納例については,「図2-86 事前割り当てサブページ不足発生時の非連続の事前割り当てサブページの確保例」を参照してください。

(f) 適用基準

次のような場合に,事前ページ割り当て機能の適用を検討してください。

  • 2階層以上のレコードの格納およびレコードの削除を繰り返し実行するファミリへの連続したアクセスがあり,このとき一定のアクセス性能を維持したい場合(サブページ切り替え指定や,PCTFREEオペランドまたはrecfreeオペランド指定で厳密な空き領域設計ができる場合を除く)

  • ほかの平均的なサイズのファミリと比べて,サイズが極端に大きいファミリであり,個別に格納領域の設計を行う必要がある場合

  • サブページ切り替えを行うための厳密な見積もりが困難である場合

(g) 警告情報の出力

HiRDB/SDデータベース作成ユティリティ(pdsdblod)での警告情報の出力

データロードによるレコードの格納時,レコードを格納するために確保したサブページの数が,指定した事前割り当てサブページ数を超えた場合,ファミリ単位にKFPB63515-Wメッセージが出力されます(事前割り当てサブページ数の見積もりの誤り,または事前割り当てサブページ数の指定誤りが通知されます)。KFPB63515-Wメッセージについては,「12.7 実行結果ファイルの出力形式」を参照してください。

HiRDB/SDデータベース再編成ユティリティ(pdsdbrog)での警告情報の出力

アンロード時,事前ページ割り当て機能が適用されているファミリが存在するのに,アンロードデータファイル内にプリフィクス部が存在しないため,事前割り当てサブページ数が取得されなかった場合,KFPB63516-Wメッセージが出力されます(事前割り当てサブページ数の引き継ぎが行われなかったことが通知されます)。

SDBデータベースを操作するAPIによるレコードの格納(STORE)での警告情報の出力

SDBデータベースを操作するAPIによるレコードの格納時に,事前割り当てサブページが不足して事前割り当てサブページが追加で確保された場合,レコード格納用RDエリア単位にKFPB32000-W〜KFPB32003-Wメッセージが出力されます(事前割り当てサブページ数の再見積もりの要否確認が必要であることが通知されます)。

なお,このメッセージは1回出力されると,次回以降の事前割り当てサブページの不足時に,事前割り当てサブページを追加で確保してもメッセージが出力されません。この場合,次のどれかの操作が行われるまでメッセージが出力されません。メッセージの出力抑止状態の解除条件,および出力対象となるRDエリアを次に示します。

出力抑止状態の解除条件
  • クローズ状態の該当するレコード格納用RDエリアをpdopenコマンド,またはpdrels -oコマンドでオープンしたとき

  • 該当するレコード格納用RDエリアに対して初期データロードを実行したとき

  • HiRDBを再起動したとき

出力対象となるRDエリア
  • インナレプリカ機能を使用していないレコード格納用RDエリアの場合,出力対象となります。

  • レコード格納用RDエリアにインナレプリカ機能を使用している場合,オリジナルRDエリアが出力対象となります。

(5) 更新可能なオンライン再編成の追い付き反映処理でレコードをサブページに格納する場合【4V FMB】

更新可能なオンライン再編成の追い付き反映処理時に有効となる格納配置制御のオプションを次の表に示します。

表2‒32 追い付き反映処理時に有効となる格納配置制御のオプション

追い付き反映処理の種類

格納配置制御のオプション

ページ切り替えオプション

PCTFREE有効化オプション

事前割り当てページ数

レコードの格納(STORE)の更新追い付き反映処理

レコードの削除(ERASE)の回復追い付き反映処理

×

×

(凡例)

○:オンライン(レプリカRDエリア)側で,レコードの格納(STORE)時に指定した格納配置制御のオプションの指定を適用します。SDBデータベースの再編成時に,事前ページ割り当て機能の適用有無を変更した場合の動作については,「(4)(d) 事前ページ割り当て機能に関する留意事項」を参照してください。

×:格納配置制御のオプションの指定を適用しません。

  • サブページを切り替えません。

  • SDBデータベース格納定義のPCTFREE句で指定したサブページ内の未使用領域の比率を適用しないで,レコード実現値を格納します。

−:該当しません。

(a) レコードの格納(STORE)の更新追い付き反映処理時の格納配置制御

レコードの格納(STORE)の更新追い付き反映処理時の格納配置制御では,レコードを事前割り当てサブページに格納する場合を除き,オンライン(レプリカRDエリア)側で指定した格納配置制御のオプションの指定が適用されます。

ページ切り替えオプションの指定の違いによる格納配置制御については,「図2-79 ページ切り替えオプションによるレコードの格納例(4V FMBのSDBデータベースの場合)」を参照してください。

PCTFREE有効化オプションを適用した場合の格納配置制御については,「図3-15 サブページに格納するレコード件数を制限する例」を参照してください。

事前ページ割り当て機能の適用有無の違いによる格納配置制御については,「図2-88 事前ページ割り当て機能の適用有無の違いによるファミリの格納例(サブページ分割をする場合)」を参照してください。なお,この図では,HiRDB/SDデータベース作成ユティリティ(pdsdblod)を実行する場合に,事前割り当てサブページ数を指定したときのファミリの格納例を示しています。SDBデータベースを操作するAPIでレコードの格納を実行する場合に,事前割り当てサブページ数を指定したときも同様の格納配置となります。

ルートレコード下のレコードの格納時に,事前割り当てサブページが不足した場合の格納配置制御については,「図2-86 事前割り当てサブページ不足発生時の非連続の事前割り当てサブページの確保例」を参照してください。

(b) レコードの削除(ERASE)の回復追い付き反映処理時の格納配置制御

レコードの削除(ERASE)の回復追い付き反映処理時の格納配置制御では,オンライン(レプリカRDエリア)側で指定した格納配置制御のオプションの指定が適用されません。

ページ切り替えオプションを指定し,PCTFREE有効化オプションを適用したときの回復追い付き反映処理時の格納配置制御を次の図に示します。

図2‒89 レコードの削除(ERASE)の回復追い付き反映処理時の格納配置制御

[図データ]

[図データ]