Hitachi

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


2.6.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〜5のページにレコードを格納できない場合,RDエリアのページ不足となります。

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

優先順位

レコード種別

ルートレコード

2階層以下のレコード

1

空きページ

基準ページ

2

基準ページの前後のファミリ内接続ページ

3

基準ページのセグメント,およびその直前のセグメント内の空きページ

4

優先順位3以外の空きページ

5

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

(凡例)

−:該当しません。

注※

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

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

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

[図データ]

[図データ]

[図データ]

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

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

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

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

優先順位

レコード種別

ルートレコード

2階層以下のレコード

1

空きページ※1

基準ページ

2

優先ページ※2

3

基準ページと優先ページ以外の事前割り当てページ

4

基準ページのセグメント,およびその直前のセグメント内の空きページ※1

5

優先順位4以外の空きページ※1

(凡例)

−:該当しません。

注※1

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

注※2

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

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

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

[図データ]

[図データ]

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

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

表2‒21 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‒22 ページ切り替えの指定方法

格納方法

指定方法

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-19 SDBデータベースを操作するAPIまたはDMLでレコードを格納する場合の優先順位(事前ページ割り当て機能を適用していない場合)」の優先順位2および5の対象ページとはなりません。ただし,ページの切り替え後にレコードを格納することによって作成されたページ間は関連づけられるので,新たなファミリ内接続ページとなります。ページ間の関連づけ,ファミリ内接続ページについては,「2.6.1(2) ページ間の関連づけとファミリ内接続ページ」を参照してください。

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

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

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

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

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

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

[図データ]

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

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

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

[図データ]

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

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

図2‒57 ページ切り替えオプションによるレコードの格納例(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‒23 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‒58 アクセス頻度によってページ切り替え指定を使い分ける例

[図データ]

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

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

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

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

[図データ]

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

事前ページ割り当て機能について説明します。事前ページ割り当て機能は,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‒24 事前割り当てページ数を取得できる機能

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

機能概要

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

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

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

レコードの検索(FETCH)

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

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

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

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

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

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

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

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

[図データ]

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

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

  • ページ切り替え

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

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

  • 確保できる事前割り当てページ数の上限値は,1ファミリ当たり2,147,483,647です。

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

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

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

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

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

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

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

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

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

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

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

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

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

    図2‒61 追加データロード時の非連続データページ(事前割り当てページ)の確保例

    [図データ]

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

    • 追加データロード時

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

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

    図2‒62 事前割り当てページ不足発生時の非連続データページ(事前割り当てページ)の確保例

    [図データ]

    この図では,1ページずつ追加しているため,データページの連続性が大きく損なわれています。この問題は,一定量の事前割り当てページを一括して確保することで緩和できます。

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

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

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

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

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

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

    空きページのサーチ例を次の図に示します。

    図2‒63 空きページのサーチ例

    [図データ]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      ・PCTFREE有効化オプション

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

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

    [図データ]

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

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

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

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

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

[図データ]

[図データ]

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

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

(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‒25 追い付き反映処理時に有効となる格納配置制御のオプション

追い付き反映処理の種類

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

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

PCTFREE有効化オプション

事前割り当てページ数

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

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

×

×

(凡例)

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

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

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

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

−:該当しません。

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

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

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

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

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

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

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

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

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

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

[図データ]

[図データ]