10.1.2 データ用グローバルバッファの割り当て
- 〈この項の構成〉
(1) 異なるページ長のRDエリアが複数ある場合
異なるページ長のRDエリアが複数ある場合は,同じか又は近いページ長のRDエリアをまとめて一つのグローバルバッファに割り当てます。これによって,メモリの使用効率が良くなります。
異なるページ長のRDエリアをまとめて一つのグローバルバッファに割り当てると,ページ長が最も大きいRDエリアに合わせてグローバルバッファが確保されます。このため,ページ長が小さいRDエリアに対してデータページの入出力をした場合,グローバルバッファ一面に使用されない領域ができることになり,メモリの使用効率が下がります。
グローバルバッファの割り当ての例を次の図に示します。
HiRDB/パラレルサーバの場合は,サーバごとにページ長が最も大きいRDエリアに合わせてグローバルバッファが確保されます。例えば,ページ長が最も大きいRDエリアのページ長がバックエンドサーバ1は4096バイト,バックエンドサーバ2は8192バイトの場合,割り当てられるグローバルバッファサイズはバックエンドサーバ1が4096バイト,バックエンドサーバ2が8192バイトになります。
(2) 一つのグローバルバッファに複数のRDエリアを割り当てる場合
複数のRDエリアを構成するHiRDBファイルが一つのHiRDBファイルシステム領域に含まれる場合は,これらのRDエリアを一つのグローバルバッファに割り当てるようにします。
(3) UAPからのアクセス方法が異なるRDエリアが複数ある場合
同じページ長でも,UAPからのアクセス方法が異なるRDエリアが複数ある場合,例えば,用途が異なるRDエリア,順次処理が多くて更新が少ないRDエリア,追加や更新が多いRDエリアなどがある場合は,それぞれ異なるグローバルバッファを割り当てるようにします。
(4) RDエリアの追加が予想される場合
データベース構成変更ユティリティ(pdmod)で追加できるRDエリアを次に示します。
-
ユーザ用RDエリア
-
ユーザLOB用RDエリア
-
データディクショナリLOB用RDエリア
-
ストアドプロシジャを管理するディクショナリ表を格納するデータディクショナリ用RDエリア
-
リスト用RDエリア
また,フレキシブルハッシュ分割した表を格納しているRDエリアは,ALTER TABLEでRDエリアを追加できます。追加したRDエリアを使用するためには,グローバルバッファを割り当てる必要があります。このため,RDエリアの追加が予想される場合は,追加が予想されるRDエリアの最大ページを見込んで,システム共通定義のpdbufferオペランドで-oオプションを指定したグローバルバッファを用意しておきます。
なお,あらかじめグローバルバッファを割り当てていなかった場合は,システム共通定義のpdbufferオペランドで,追加したRDエリアへの割り当てを再度定義します。これによって,追加したRDエリアを使用できます。
(5) リスト用RDエリアにグローバルバッファを割り当てるときの注意
リスト用RDエリアにグローバルバッファを割り当てる場合,ユーザ用RDエリアにグローバルバッファを割り当てるときの設計に加え,次に示す点に注意してください。
-
リスト用RDエリアのグローバルバッファと,表やインデクスのグローバルバッファを共用したときに大量のリストを作成すると,表やインデクスのデータがグローバルバッファから追い出されてしまうことがあります。したがって,なるべく共用しないで,リスト用RDエリア専用のグローバルバッファを割り当ててください。
-
リスト用RDエリアのグローバルバッファのバッファ面数には,なるべく「同時にアクセスするリスト数×1.5」以上の値を指定してください。
-
リスト用RDエリアのグローバルバッファと,表やインデクスのグローバルバッファとを共用する場合,ページ長が同じか又はページ長が近いRDエリアを共用してください。
-
リスト用RDエリアのグローバルバッファにプリフェッチ機能を指定した場合,次に示すSQL文が実行されたときにセグメントサイズ分のページを一括して入力します。
-
SELECT文でリストを介した表の検索をする場合,リストページを一括して入力します。
-
ASSIGN LIST文でリストからリストを作成する場合,FROM句に指定したリストのリストページを一括して入力します。
-