3.2.4 サブページの設計
ここでは,サブページの設計をするために必要な情報について説明します。
サブページ分割する場合には,同時実行性とデータベース容量を考慮して設計してください。サブページ分割を適用した場合の配置制御については,「2.7 レコードの配置制御(サブページ分割をする場合)」を参照してください。
- 〈この項の構成〉
(1) サブページの使用目的と適用基準
HiRDB/SDでは,レコードを格納する際の配置制御によって,ルートレコードが異なるレコード(異なるファミリのレコード)は同じページに格納されません。そのため,1ファミリに対して最低1ページの領域が必ず確保されます。1ファミリのトータルのレコード長がページ長より小さい場合,ページ内に未使用領域ができてしまうため,レコードの格納効率が低下し,データベース容量が増加します。
このような場合,ページをサブページ分割すると,ページ内の未使用領域の発生を抑えることができます。ページ内の未使用領域の発生を抑えることで,レコードの格納効率が向上し,データベース容量の削減を図ることができます。
次の表に示す適用基準を満たす場合は,サブページの使用を検討してください。
項番 |
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つの条件を満たす場合
|
(2) サブページの状態
サブページには次の表に示す状態があります。
サブページの状態 |
説明 |
---|---|
まだ割り当てられていないサブページ,またはレコードの削除によって解放されたサブページです。 |
|
次のどちらかの条件を満たすサブページです。
|
|
次のどちらかの条件を満たすサブページです。
|
(3) サブページ分割しているときのページの状態
サブページ分割しているときのページの状態を次の表に示します。
ページの状態 |
説明 |
---|---|
未使用ページ |
まだ割り当てられていないページです。 |
使用中空きページ |
レコードの削除によって,ページ内の全サブページが未使用サブページとなったページです。 |
使用中ページ |
ページ内に使用中サブページまたは使用中満杯サブページがあり,かつ未使用サブページがあるページです。 |
使用中満杯ページ |
ページ内の全サブページが使用中サブページまたは使用中満杯サブページであり,未使用サブページがないページです。 |
(4) サブページ内の未使用領域の比率
HiRDB/SDデータベース作成ユティリティ(pdsdblod)によるレコード格納時に,使用中サブページ内に未使用領域を確保できます※。どれだけの未使用領域を確保するかは,サブページ内の未使用領域の比率で指定します。
- 注※
-
4V FMBまたは4V AFMのSDBデータベースを操作するAPIで,PCTFREE有効化オプションを指定したレコードの格納時にも,使用中サブページ内に未使用領域を確保できます。SDBデータベースを操作するAPIについては,マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。
サブページ内の未使用領域の比率を次の図に示します。
- [説明]
-
サブページ内の未使用領域の比率は,SDBデータベース格納定義のPCTFREE句で指定します。サブページ内の未使用領域の比率は0〜99%の範囲で指定でき,省略値は30%となります。また,HiRDB/SDデータベース作成ユティリティ(pdsdblod)のenvironment文のrecfreeオペランドで,サブページ内の未使用領域の比率を指定することもできます。両方を指定した場合,recfreeオペランドの指定値が優先されます。
なお,サブページ内の未使用領域の比率の設定は性能に影響を及ぼします。詳細については,「3.2.6 レコード格納時の空き領域の作成(サブページ分割をする場合)」を参照してください。
(5) サブページの確保と解放
-
レコードを格納する際,必要に応じてサブページが確保されます。一度確保されたサブページはそのサブページが解放されないかぎり再利用できません。
-
-
セグメントが解放されたときに,セグメント内のページに属するサブページが解放されます。
-
事前割り当てサブページの場合,ルートレコードが削除されたときに,該当するファミリを格納するために確保している事前割り当てサブページがすべて解放されます。
-
通常のサブページの場合,サブページ内のレコードがすべて削除されたときに,サブページが解放されます。なお,レコードの一括削除の場合は,レコードの管理情報を更新して,レコードが削除された状態にします。実際のレコード自体は削除されません。そのため,サブページ内のレコードがすべて削除された状態となっても,サブページは解放されません。
-
(6) サブページ分割しているときのページの確保と解放
(7) サブページ長(サブページ分割数)の設計方針
サブページ分割するページのページ長は4,096バイト固定になります。そのため,サブページ分割数(SDBデータベース格納定義のSTORAGE RECORD句下のSUBPAGE NUMBER句の指定値)によって,次の表に示すようにサブページ長が決まります。
サブページ分割数 |
サブページ長(単位:バイト) |
---|---|
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) 留意事項
-
サブページ分割するページのページ長は4,096バイト固定になります。そのため,RDエリアの再初期化でページ長を4,096バイトから変更した場合,RDエリアの再初期化後のレコードの格納時や検索時などにエラーとなります。
-
サブページ分割を適用した場合,排他制御の単位がページからサブページに変わるため,サブページ分割を適用しないときに比べて,排他制御によるメモリ使用量や処理時間が増加することがあります。例えば,1ページに格納される複数のレコードが,サブページ分割を適用したことによって複数のサブページに分かれて格納されるような場合は,確保する排他資源数が増加するため,排他制御によるメモリ使用量や処理時間が増加します。
-
サブページ分割を適用したRDエリアのバックアップファイルの容量は,サブページ分割を適用しない場合に比べて大きくなります。
-
データベース状態解析ユティリティ(pddbst)の物理的解析では,RDエリア内の全セグメントおよび全ページの格納状態を解析します。この場合,解析結果の「満杯ページ」は,「(3) サブページ分割しているときのページの状態」で説明している「使用中満杯ページ」のことを指します。