Hitachi

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


3.5.5 ユーザ用RDエリアの容量の見積もり

ユーザ用RDエリアの容量は,レコードを格納するデータページ,またはインデクスを格納するためのインデクスページ数を計算したあと,総ページ数を計算して求めることができます。

ユーザ用RDエリアの容量は次の手順で見積もります。

手順
  1. SDBデータベースに格納するレコードのレコード長を算出します。

  2. ページ長,およびサブページ長を設計します。

  3. 事前割り当てページ数または事前割り当てサブページ数を算出します。

  4. 平均的なファミリが使用するページ数またはサブページ数を算出します。

  5. セグメントサイズを設計します。

  6. レコードを格納するデータページ数を算出します。

  7. ユーザ用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‒31 ページ長およびサブページ長の設計指針

設計項目

説明

ページ

ページ長の決定

ページ長については,「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エリアのセグメントサイズの設計指針を次の表に示します。

表3‒32 セグメントサイズの設計指針

設計項目

説明

セグメントサイズの決定

セグメントサイズ(1セグメント当たりのページ数)は,平均的なファミリが使用するページ数にすることを推奨します。

詳細については,「3.2.2 セグメントの設計」,および「3.5.5(4) 平均的なファミリが使用するページ数またはサブページ数の算出」を参照してください。

なお,サブページ分割をする場合は,次に示す計算式で平均的なファミリが使用するページ数を求めてください。

  • ↑平均的なファミリが使用するサブページ数÷サブページ分割数↑

また,マニュアル「HiRDB システム導入・設計ガイド」の「セグメントサイズの決定」も参照してください。

セグメント内の空きページの比率の設定

(6) レコードを格納するデータページ数の算出

レコードを格納するデータページ数は,次に示す計算式で求めることができます。

変数の説明
  • 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エリアの容量の見積もり」の「インデクスの格納ページ数の計算方法」を参照してください。

なお,マニュアルを参照するときには次の点に注意してください。