3.5.5 ユーザ用RDエリアの容量の見積もり
ユーザ用RDエリアの容量は,レコードを格納するデータページ,またはインデクスを格納するためのインデクスページ数を計算したあと,総ページ数を計算して求めることができます。
ユーザ用RDエリアの容量は次の手順で見積もります。
- 手順
-
-
SDBデータベースに格納するレコードのレコード長を算出します。
-
ページ長,およびサブページ長を設計します。
-
事前割り当てページ数または事前割り当てサブページ数を算出します。
-
平均的なファミリが使用するページ数またはサブページ数を算出します。
-
セグメントサイズを設計します。
-
レコードを格納するデータページ数を算出します。
-
ユーザ用RDエリアに必要な容量を算出します。
-
それぞれの説明を次に示します。
- 〈この項の構成〉
(1) レコード長の算出
システム要件から,SDBデータベースのレコード長を算出します。レコード長の計算式を次に示します。
- 変数の説明
-
-
f:レコード型のすべての構成要素数
SDBデータベース定義でOCCURS句を指定する場合,システム内で繰り返し回数分生成される構成要素数も含みます。システム内で生成される構成要素については,「11.7.1(4)(g) OCCURS」を参照してください。
-
di:各構成要素のデータ長
データ型とデータ長の対応を次の表に示します。
表3‒30 データ型とデータ長の対応 データ型
データ長(単位:バイト)
CHARACTER
n(1〜30,000)※1
XCHARACTER
n(1〜30,000)※1
PACKED DECIMAL FIXED
↑(m+n+1)÷2↑※2
INTEGER
4
SMALLINT
2
- 注※1
-
SDBデータベース定義で指定した値です。nは指定したデータ長です。
- 注※2
-
SDBデータベース定義で指定した値です。mは整数部の桁数です。nは小数部の桁数です。m+nは最大38となります。
-
sc:システム用構成要素の長さ
4V AFMのSDBデータベースの仮想ルートレコード型の場合:4バイト
上記以外の場合:0バイト
-
y:ポインタ管理領域の予備領域の長さ(SDBデータベース格納定義のPOINTER AREA SIZE句の指定値)
-
rpn:4V FMBまたはSD FMBのSDBデータベースのルートレコード型の場合は4,それ以外の場合は0を代入してください。
-
b:当該レコード型を親レコード型とする親子集合数
-
c:ルートレコード型以外のレコード型の場合は20,ルートレコード型の場合は0を代入してください。
-
ow:OWNERポインタを持つ子レコードの場合は8,それ以外の場合は0を代入してください。
-
nu:当該レコード型を親レコード型とする親子集合のうち,USERポインタを持つ子レコード型の数
-
ny:当該レコード型を親レコード型とする親子集合のうち,一括削除機能を適用する子レコード型の数
-
(2) ページ長およびサブページ長の設計
ユーザ用RDエリアのページ長,およびサブページ長の設計指針を次の表に示します。
設計項目 |
説明 |
|
---|---|---|
ページ |
ページ長の決定 |
ページ長については,「3.2.3 ページの設計」を参照して決定してください。 また,マニュアル「HiRDB システム導入・設計ガイド」の「ページ長の決定」も参照してください。 なお,サブページ分割をする場合は,ページ長は4,096バイト固定になります。 |
ページ内の未使用領域の比率の設定 |
「3.2.5 レコード格納時の空き領域の作成(サブページ分割をしない場合)」を参照してください。 |
|
サブページ |
サブページ長の決定 |
サブページ長については,「3.2.4 サブページの設計」を参照してください。 |
サブページ内の未使用領域の比率の設定 |
「3.2.6 レコード格納時の空き領域の作成(サブページ分割をする場合)」を参照してください。 |
(3) 事前割り当てページ数または事前割り当てサブページ数の算出【4V FMB】
事前割り当てページまたは事前割り当てサブページに格納するファミリについては,そのファミリが使用するページ数またはサブページ数を個別に見積もります。
次に示す計算式から,レコードが使用する総領域長を計算してください。サブページ分割をしない場合は,「表3-9 見積もりに必要な項目」の項番5,8について※,レコードが使用する総領域長を計算してください。サブページ分割をする場合は,「表3-14 見積もりに必要な項目」の項番6,9について※,レコードが使用する総領域長を計算してください。
- 注※
-
事前割り当てページまたは事前割り当てサブページにレコードを格納する場合,ページ切り替え指定によって,ページまたはサブページを切り替えることはできません。
- 変数の説明
-
-
e:RDエリアに格納するレコード型の総数
-
n1i:各レコード型のデータロード時に格納するレコード件数(ページ切り替え指定なし)
-
u2i:各レコード型のデータロード後に格納するレコード件数(ページ切り替え指定なし)
-
Li:各レコード型のレコード長
-
また,次の計算式を使って,平均領域長を計算してください。
上記の平均領域長を使って,次の計算式からファミリが使用するページ数またはサブページ数を計算してください。
-
ファミリが使用するページ数を求める場合
-
ファミリが使用するサブページ数を求める場合
- 変数の説明
-
-
e:RDエリアに格納するレコード型の総数
-
n1i:各レコード型のデータロード時に格納するレコード件数(ページ切り替え指定なし)
-
u2i:各レコード型のデータロード後に格納するレコード件数(ページ切り替え指定なし)
-
b:レコードを格納するRDエリアのページ長
-
spl:サブページ長
サブページ長の求め方については,「3.2.4(7) サブページ長(サブページ分割数)の設計方針」を参照してください。
-
- 注※
-
1.3は次の内容を考慮した値です。ファミリ内のレコードが非連続のデータページへ分散することを防止したい場合,1.3より大きい値を設定してください。
-
データロード後に格納するレコード件数が想定よりも多くなり,事前割り当てページまたは事前割り当てサブページが不足すると,追加で事前割り当てページまたは事前割り当てサブページが確保されます。
-
(4) 平均的なファミリが使用するページ数またはサブページ数の算出
平均的なファミリが使用するページ数またはサブページ数は,事前割り当てページまたは事前割り当てサブページに格納するファミリを除外して見積もります。
次に示す計算式から,レコードが使用する総領域長を計算してください。サブページ分割をしない場合は,「表3-9 見積もりに必要な項目」の項番5,9について,レコードが使用する総領域長を計算してください。サブページ分割をする場合は,「表3-14 見積もりに必要な項目」の項番6,10について,レコードが使用する総領域長を計算してください。
- 変数の説明
-
-
e:RDエリアに格納するレコード型の総数
-
Li:各レコード型のレコード長
-
n1i:各レコード型のデータロード時に格納するレコード件数(ページ切り替え指定なし)
-
s2i:各レコード型のデータロード後に格納するレコード件数(ページ切り替え指定なし,かつセグメント内の空きページを使用するレコード)
-
また,次の計算式を使って,平均領域長を計算してください。
- 変数の説明
-
-
e:RDエリアに格納するレコード型の総数
-
n1i:各レコード型のデータロード時に格納するレコード件数(ページ切り替え指定なし)
-
s2i:各レコード型のデータロード後に格納するレコード件数(ページ切り替え指定なし,かつセグメント内の空きページを使用するレコード)
-
上記の平均領域長を使って,次の計算式から平均的なファミリが使用するページ数またはサブページ数を計算してください。
-
平均的なファミリが使用するページ数を求める場合
-
平均的なファミリが使用するサブページ数を求める場合
- 変数の説明
-
-
e:RDエリアに格納するレコード型の総数
-
b:レコードを格納するRDエリアのページ長
-
C:ページ内の未使用領域の比率
-
spl:サブページ長(サブページ長の求め方については,「3.2.4(7) サブページ長(サブページ分割数)の設計方針」を参照してください)
-
D:サブページ内の未使用領域の比率
-
t1i:各レコード型のデータロード時に格納するレコード件数(ページ切り替え'O'指定)
-
c1i:各レコード型のデータロード時に格納するレコード件数(ページ切り替え'C'指定)
-
n1i:各レコード型のデータロード時に格納するレコード件数(ページ切り替え指定なし)
-
t2i:各レコード型のデータロード後に格納するレコード件数(ページ切り替え'O'指定)
-
c2i:各レコード型のデータロード後に格納するレコード件数(ページ切り替え'C'指定)
-
s2i:各レコード型のデータロード後に格納するレコード件数(ページ切り替え指定なし,かつセグメント内の空きページを使用するレコード)
-
(5) セグメントサイズの設計
ユーザ用RDエリアのセグメントサイズの設計指針を次の表に示します。
設計項目 |
説明 |
---|---|
セグメントサイズの決定 |
セグメントサイズ(1セグメント当たりのページ数)は,平均的なファミリが使用するページ数にすることを推奨します。 詳細については,「3.2.2 セグメントの設計」,および「3.5.5(4) 平均的なファミリが使用するページ数またはサブページ数の算出」を参照してください。 なお,サブページ分割をする場合は,次に示す計算式で平均的なファミリが使用するページ数を求めてください。
また,マニュアル「HiRDB システム導入・設計ガイド」の「セグメントサイズの決定」も参照してください。 |
セグメント内の空きページの比率の設定 |
|
(6) レコードを格納するデータページ数の算出
レコードを格納するデータページ数は,次に示す計算式で求めることができます。
-
サブページ分割をしない場合
計算式中の平均的なファミリが使用するページ数は,「表3-9 見積もりに必要な項目」の項番1〜7および9を使用して計算してください。また,計算式中の事前割り当てページ数の合計値は,「表3-9 見積もりに必要な項目」の項番5および8を使用して計算してください。
-
サブページ分割をする場合
計算式中の平均的なファミリが使用するサブページ数は,「表3-14 見積もりに必要な項目」の項番1〜8および10を使用して計算してください。また,計算式中の事前割り当てサブページ数の合計値は,「表3-14 見積もりに必要な項目」の項番6および9を使用して計算してください。
- 変数の説明
-
-
S:データベース初期設定ユティリティ(pdinit),またはデータベース構成変更ユティリティ(pdmod)で指定した1セグメントのページ数(セグメントサイズ)
-
ppn:事前割り当てページの合計数
-
spn:レコードを格納するデータページのサブページ分割数
-
psn:事前割り当てサブページの合計数
- 注※1
-
1.3は次の内容を考慮した値です。内容を確認して,容量が大きくなることが予想される場合,1.3より大きい値を設定してください。
-
SDBデータベースを操作するAPIまたはDMLによるレコード追加時に,ほかのトランザクションによって排他を取得できない場合,想定した格納位置とは異なる場所にレコードが格納されることがあります。その結果,格納効率が悪くなり容量が増加することがあります。
-
各レコード型の平均領域長から計算するため,実際のレコード格納時のレコードサイズ,およびレコードの格納順序によっては,格納効率が悪くなり容量が増加することがあります。
-
平均的なファミリが使用するページ数またはサブページ数から見積もるため,ファミリ間にばらつきがある場合,計算結果以上に容量が大きくなることがあります。
-
- 注※2
-
事前割り当てページまたは事前割り当てサブページを確保するファミリを除外して計算してください。
-
(7) ユーザ用RDエリアに必要な容量の算出
全レコードの格納に必要なページ数から,ユーザ用RDエリアに必要な容量を算出します。計算式を次に示します。
a×(b+c) (単位:バイト)
- 変数の説明
-
-
a:ユーザ用RDエリアのページ長
-
b:全レコードの格納に必要なページ数
-
c:ディレクトリページ部分の総ページ数
-
ディレクトリページの総ページ数については,マニュアル「HiRDB システム導入・設計ガイド」の「ユーザ用RDエリアの容量の見積もり」の「ディレクトリページ部分の総ページ数の計算式」を参照してください。
(8) インデクスを格納するページ数の見積もり
インデクスを格納するページ数の見積もりについては,マニュアル「HiRDB システム導入・設計ガイド」の「ユーザ用RDエリアの容量の見積もり」の「インデクスの格納ページ数の計算方法」を参照してください。
なお,マニュアルを参照するときには次の点に注意してください。
-
「CREATE INDEX」を「SDBデータベース定義」に読み替えてください。
-
クラスタキーの記載は無視してください。
-
仮想ルートレコード型に定義したシーケンシャルインデクスについては,インデクスキーとレコード実現値の関係が通常2対1※になります。そのため,マニュアル「HiRDB システム導入・設計ガイド」の「ユーザ用RDエリアの容量の見積もり」の「インデクスの格納ページ数の計算方法」で求めたインデクスページ数を2倍して,そのインデクスのインデクスページ数としてください。
- 注※
-
詳細については,「2.3.9 シーケンシャルインデクス」を参照してください。
-
インデクスの格納ページ数の計算で使用する変数を,次のとおり読み替えてください。
b:SDBデータベース格納定義のシーケンシャルインデクス定義,または二次インデクス定義で指定したPCTFREE句のページ内の未使用領域の比率※1(%)
c,h:キーの種類の個数
d:1
e,f:0
g:シーケンシャルインデクス,または二次インデクスのキーとなる構成要素の長さ※2(バイト)
- 注※1
-
ページ内の未使用領域の比率を指定しない場合は,30%とします。
- 注※2
-
キーとなる構成要素の長さは,次に示す式で求めます。
↑キー長÷4↑×4
式中のキー長は,次の表を参照して求めてください。インデクスを構成する構成要素が複数の場合は,各構成要素に対してキー長を求め,キー長の合計を上記の式中のキー長としてください。
4V AFMのSDBデータベースの仮想ルートレコード型に定義するシーケンシャルインデクスのキー長は,次の手順で算出してください。
1. 次の表の「インデクスを構成する構成要素が複数の場合」のキー長から,構成要素のキー長を求めます。インデクスを構成する構成要素が複数の場合は,各構成要素に対してキー長を求め,キー長の合計を算出します。
2. 1.で求めたキー長に6バイトを加算します。この値を上記の式中のキー長としてください。
4V AFMのSDBデータベースの仮想ルートレコード型には,HiRDB/SDが内部的に使用するシステム用構成要素が定義されます。そのため,SDBデータベース格納定義のORDER KEY句に指定した構成要素が1つだけであっても,上記の手順でキー長を算出してください。
表3‒33 データ型ごとのキー長 データ型
キー長
インデクスを構成する構成要素が1つの場合
インデクスを構成する構成要素が複数の場合
INTEGER
4
5
SMALLINT
2
3
PACKED [DECIMAL FIXED] 整数部〔,小数部〕
↓(整数部の桁数+小数部の桁数)÷2↓+1
↓(整数部の桁数+小数部の桁数)÷2↓+2
CHARACTER,XCHARACTER
定義した構成要素の長さ
定義した構成要素の長さ+1