3.2.3 ページの設計
ここでは,ページの設計をするために必要な情報について説明します。
なお,1ファミリのトータルのレコード長とページ長によっては,レコードを格納する際の配置制御との関係からレコードの格納効率が低下することがあります。「3.2.4 サブページの設計」で説明しているサブページの適用基準を参照して,該当する場合はサブページ分割の適用を検討してください。
ここでの説明は,サブページ分割をしないことを前提としています。
(1) ページの状態
ページには次の表に示す状態があります。
ページの状態 |
説明 |
---|---|
まだ割り当てられていないページ,またはレコードの削除によって解放されたページです。 |
|
次のどちらかの条件を満たすページです。
|
|
次のどちらかの条件を満たすページです。
|
(2) ページ内の未使用領域の比率
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.5 レコード格納時の空き領域の作成(サブページ分割をしない場合)」を参照してください。
(3) ページの確保と解放
-
RDエリアにレコードを格納する際,必要に応じてページが確保されます。一度確保されたページ(一度使用したページ)はそのページが解放されないかぎり,再利用できません。
-
次のどれかの条件を満たす場合にページは解放されます。
-
セグメントが解放された場合
-
事前割り当てページであり,ルートレコード実現値が削除された場合
この場合,該当するファミリを格納するために確保している事前割り当てページがすべて解放されます。
-
通常のページであり,ページ内のレコード実現値がすべて削除された場合
なお,レコードの一括削除の場合は,レコードの管理情報を更新して,レコードが削除された状態にします。実際のレコード自体は削除されません。そのため,ページ内のレコード実現値がすべて削除された状態となっても,ページは解放されません。
-
(4) ページ長の設計方針
ページ長は,データの入出力時間およびディスク所要量に影響を与えるため,次の項目を考慮して設計する必要があります。
-
ページ長は,対象となるSDBデータベースの最大のレコード長よりも大きくなければなりません。次に示す計算式を満たすように設計してください。
ページ長≧mrl+88(単位:バイト)
- (凡例)
-
mrl:対象となるSDBデータベースの最大のレコード長
-
ページは入出力の単位であるため,ページ長を大きくすると入出力回数を軽減できます。逆にページ長が小さいと入出力回数が増加します。
-
ページは排他制御の単位であるため,ページ長を小さくして格納するレコード数を制限することで同時実行性を向上させることができます。逆にページ長を大きくして同一ページに多くのレコードを格納すると同時実行性が低下します。
-
ルートレコードが異なるレコードは別ページに格納されるため,1ファミリのトータルのレコード長が小さい場合,不当に大きなページ長を設定すると格納効率が悪くなります。
HiRDB/SDでは,レコードの近傍配置やデータのアクセス性能(同時実行性能)を考慮する必要があります。そのため,あらかじめレコードを格納しない領域(ページ内の未使用領域の比率)も含めて設計します。