Hitachi

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


3.2.4 サブページの設計

ここでは,サブページの設計をするために必要な情報について説明します。

サブページ分割する場合には,同時実行性とデータベース容量を考慮して設計してください。サブページ分割を適用した場合の配置制御については,「2.7 レコードの配置制御(サブページ分割をする場合)」を参照してください。

〈この項の構成〉

(1) サブページの使用目的と適用基準

HiRDB/SDでは,レコードを格納する際の配置制御によって,ルートレコードが異なるレコード(異なるファミリのレコード)は同じページに格納されません。そのため,1ファミリに対して最低1ページの領域が必ず確保されます。1ファミリのトータルのレコード長がページ長より小さい場合,ページ内に未使用領域ができてしまうため,レコードの格納効率が低下し,データベース容量が増加します。

このような場合,ページをサブページ分割すると,ページ内の未使用領域の発生を抑えることができます。ページ内の未使用領域の発生を抑えることで,レコードの格納効率が向上し,データベース容量の削減を図ることができます。

次の表に示す適用基準を満たす場合は,サブページの使用を検討してください。

表3‒4 サブページの適用基準

項番

SDBデータベース種別

適用基準

1

4V FMBまたはSD FMBの場合

階層構造がなく(親レコードだけ),レコード長が1,982バイト以下の場合

2

1ファミリ内のレコードが少なく,1ファミリのトータルのレコード長が(1,992−10×格納レコード件数)バイト以下の場合

3

4V AFMの場合

1ファミリ内のレコードが少なく,1ファミリのトータルのレコード長が(1,992−10×格納レコード件数)バイト以下の場合

4

排他が競合したときの影響を局所化するために,1ページに格納するレコード件数を制限した結果,1ページに格納されるレコードの合計長の最大値が(1,992−10×格納レコード件数)バイト以下になった場合

5

次に示す2つの条件を満たす場合

  • レコード長の最大値が1,982バイト以下の場合

  • アクセス頻度が高いSDBデータベースの同時実行性を向上させるために,ページ切り替え指定で1ページに1件のレコードを格納しようとしている場合

レコード長の計算方法については,「3.5.5(1) レコード長の算出」を参照してください。

(2) サブページの状態

サブページには次の表に示す状態があります。

表3‒5 サブページの状態

サブページの状態

説明

未使用サブページ

まだ割り当てられていないサブページ,またはレコードの削除によって解放されたサブページです。

使用中サブページ

次のどちらかの条件を満たすサブページです。

  • レコードが格納されていて,レコードを追加できる空き領域がある,通常のサブページまたは事前割り当てサブページ

  • レコードが格納されていない事前割り当てサブページ

使用中満杯サブページ

次のどちらかの条件を満たすサブページです。

  • レコードが格納されていて,レコードを追加できる空き領域がないサブページ

  • ページ切り替えオプションに'O'が指定されたレコードが格納されているサブページ

(3) サブページ分割しているときのページの状態

サブページ分割しているときのページの状態を次の表に示します。

表3‒6 サブページ分割しているときのページの状態

ページの状態

説明

未使用ページ

まだ割り当てられていないページです。

使用中空きページ

レコードの削除によって,ページ内の全サブページが未使用サブページとなったページです。

使用中ページ

ページ内に使用中サブページまたは使用中満杯サブページがあり,かつ未使用サブページがあるページです。

使用中満杯ページ

ページ内の全サブページが使用中サブページまたは使用中満杯サブページであり,未使用サブページがないページです。

(4) サブページ内の未使用領域の比率

HiRDB/SDデータベース作成ユティリティ(pdsdblod)によるレコード格納時に,使用中サブページ内に未使用領域を確保できます。どれだけの未使用領域を確保するかは,サブページ内の未使用領域の比率で指定します。

注※

4V FMBまたは4V AFMのSDBデータベースを操作するAPIで,PCTFREE有効化オプションを指定したレコードの格納時にも,使用中サブページ内に未使用領域を確保できます。SDBデータベースを操作するAPIについては,マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。

サブページ内の未使用領域の比率を次の図に示します。

図3‒5 サブページ内の未使用領域の比率

[図データ]

[説明]

サブページ内の未使用領域の比率は,SDBデータベース格納定義のPCTFREE句で指定します。サブページ内の未使用領域の比率は0〜99%の範囲で指定でき,省略値は30%となります。また,HiRDB/SDデータベース作成ユティリティ(pdsdblod)のenvironment文のrecfreeオペランドで,サブページ内の未使用領域の比率を指定することもできます。両方を指定した場合,recfreeオペランドの指定値が優先されます。

なお,サブページ内の未使用領域の比率の設定は性能に影響を及ぼします。詳細については,「3.2.6 レコード格納時の空き領域の作成(サブページ分割をする場合)」を参照してください。

(5) サブページの確保と解放

(6) サブページ分割しているときのページの確保と解放

(7) サブページ長(サブページ分割数)の設計方針

サブページ分割するページのページ長は4,096バイト固定になります。そのため,サブページ分割数(SDBデータベース格納定義のSTORAGE RECORD句下のSUBPAGE NUMBER句の指定値)によって,次の表に示すようにサブページ長が決まります。

表3‒7 サブページ分割数とサブページ長

サブページ分割数

サブページ長(単位:バイト)

2

2,028

3

1,352

4

1,012

5

808

6

676

7

576

8

504

9

448

10

404

11

368

12

336

13

312

14

288

15

268

16

252

■サブページ長(サブページ分割数)を決定する際の考慮点

性能(同時実行性)や,データベース容量を考慮してサブページ長(サブページ分割数)を決定します。また,次に示す点にも考慮してください。

  • サブページ長は,対象となるSDBデータベースの最大レコード長よりも大きくする必要があります。次に示す計算式を満たすように設計してください。

    サブページ長≧mrl+48(単位:バイト)

    (凡例)

     mrl:対象となるSDBデータベースの最大のレコード長

  • ファミリが異なるレコードは別々のサブページに格納されます。そのため,1ファミリのトータルのレコード長が小さい場合,サブページ分割数を小さくしてサブページ長を大きくすると,レコードの格納効率が悪くなります。

  • サブページは排他制御の単位であるため,4V AFMのSDBデータベースの場合は,サブページ分割数を大きくしてサブページ長を小さくすると,同一サブページに格納されるレコード数が少なくなり,同時実行性が向上します。逆に,サブページ分割数を小さくしてサブページ長を大きくすると,同一サブページに格納されるレコード数が多くなり,同時実行性が低下します。

■サブページ長(サブページ分割数)の設計

次に示す計算式からサブページ内の未使用領域長を計算し,サブページ内の未使用領域長ができるだけ小さい値になるようにサブページ分割数を決めてください。サブページ内の未使用領域長が小さいほど,レコードの格納効率が良くなります。

サブページ内の未使用領域長は,次に示す計算式から求められます。

サブページ内の未使用領域長=spl−36−N×(L+10)(単位:バイト)

(凡例)

 spl:サブページ長

 N:1サブページに格納するレコード件数

 L:レコード長

なお,計算結果が負の値となる場合は,サブページ長が不足しているため,レコードが格納できません。この場合は,次に示す対処を行ってください。

  • サブページ分割数を小さくしてサブページ長を大きくする。

  • 1サブページに格納するレコード件数を少なくする。

  • サブページに格納するレコードのレコード長を小さくする。

レコード長の求め方については,「3.5.5(1) レコード長の算出」を参照してください。

(8) 留意事項