Hitachi

ノンストップデータベース HiRDB Version 10 システム導入・設計ガイド(UNIX(R)用)


13.3.1 ページ長の決定

〈この項の構成〉

(1) ページ長を決定するときの考慮点

ページ長を決定するときの考慮点を次に示します。

  1. 全件検索及び更新,大量検索及び更新をする業務で,次に示す条件を満たす表,インデクスを格納するページ長は大きくします。

    • インデクスを付けない表を格納するRDエリア

    • クラスタキーを指定した表及びそのインデクスを格納するRDエリア

    • 大量検索,大量更新の範囲条件となるインデクスを格納するRDエリア

  2. ページ長は,RDエリアに格納する表の行長を基に,できるだけ無効領域が作られない長さにします。

    無効領域=MAX(mod((ページ長−48),(行長+2)),ページ長−48−(行長+2)×255)

  3. ページ内の未使用領域の比率を指定する場合は,次に示す計算式を目安にします。

    (ページ長×ページ内の未使用領域の比率)÷100−行長×ページ内の未使用領域に格納できる行数

    この場合,ページ内の未使用領域に1行も格納できなくなるような無意味なページ内の未使用領域の比率は指定しないようにします。

  4. インデクスを格納するページの場合は,一般的に4096〜8192バイト程度が,入出力効率の面から適しています。

  5. 列のデータ型がVARCHAR,NVARCHAR及びMVARCHARで,定義長が256バイト以上の場合は,該当する列のデータが別のページに分岐されます。また,256バイト以上の可変長文字列データがある場合,その平均長以上で最も小さいページ長にします。

  6. 列のデータ型がVARCHAR,NVARCHAR及びMVARCHARの場合,INSERT文で行をナル値として挿入すると,UPDATE文で該当する列のデータを実データに更新するときに,更新したデータの長さによっては,該当する列のデータが別のページに分岐されることがあります。可変長文字列データの初期値をナル値として,後から実データに更新することが多い場合は,更新後の行長を見込んでページ長を決定します。

  7. HiRDBでは,ページ又は行単位に排他制御ができます。行レベルの排他制御をする場合には,1ページに格納できる行数ができるだけ多くなるように,行長に応じてページ長を設定します。このとき,次に示す点を考慮します。

    • ページ内の未使用領域の比率を最低限にします。

    • ページの入出力要求に対するグローバルバッファの排他待ちが少なくなるようにします。更新が多い表の場合,排他待ちの回数が増える可能性があるため,ページ長を小さくします。

    • ページの入出力要求に対するページの入出力待ちが少なくなるようにします。ランダムアクセスが中心の業務で,ページ長が大き過ぎると,アクセス単位である行長に対する実際の入出力単位が大きくなって不要なデータ転送が発生するため,ページ長を小さくします。

      ただし,UPDATE文で列のデータ型がVARCHAR,NVARCHAR及びMVARCHARのデータに対して行長が変更されるような更新を頻繁にする場合は,表を定義するときにページ内の未使用領域の比率を高めに設定します。ページ内の未使用領域の比率の設定については,「ページ内の未使用領域の比率の設定」を参照してください。

(2) 設定方法

ページ長は,データベース初期設定ユティリティ(pdinit)又はデータベース構成変更ユティリティ(pdmod)のcreate rdarea文で設定します。

(3) ページ長を決定するときの注意

表に行を追加する場合,実際の行の長さ(データ型がVARCHAR,NVARCHAR及びMVARCHARの列を除いた長さ)がページ長を超えると,エラーになります。実際の行の長さは,「RDエリアの容量の見積もり」に記載されているディスク所要量の見積もり式を参照して求めます。求めた行の長さが,使用するユーザ用RDエリアのページ長より大きい場合は,ユーザ用RDエリアを再初期化して,ページ長を再設定する必要があります。RDエリアの再初期化は,データベース構成変更ユティリティ(pdmod)で実行します。RDエリアの再初期化については,マニュアル「HiRDB システム運用ガイド」を参照してください。