11.1.2 グローバルバッファ面数の設計
ここでは,グローバルバッファのバッファ面数の初期設計について説明します。バッファ面数は,システム共通定義のpdbufferオペランドの-nオプションで指定します。指定方法の詳細は,マニュアル「HiRDB システム定義」の「グローバルバッファに関するオペランド」を参照してください。
グローバルバッファの面数は,アクセス頻度の高いページをバッファ上に常駐できるように設計します。一般的に,アクセス頻度の高いページは,次に示す順序です。
-
インデクスのページ
-
LOB用RDエリアのディレクトリページ
-
表のページ
-
LOB用RDエリアのデータページ
グローバルバッファの面数は,この順序で設計することをお勧めします。なお,LOB用RDエリアを使用していない場合,LOB用RDエリアのバッファ面数の設計は不要です。
(1) インデクスのバッファ面数
条件に一致するデータを取り出す場合,インデクスのページを参照して条件に一致するデータを絞り込んでから,表のページにアクセスします。よって,インデクスのページの方がアクセスする頻度が高いです。このため,インデクス用のグローバルバッファは優先して割り当ててください。
(a) メモリに余裕がある場合
インデクス格納用RDエリアの全ページをグローバルバッファに常駐できる面数にしてください。
(b) メモリに余裕がない場合
メモリに余裕がない場合は,性能の優先度によって,バッファに常駐する面数を設計してください。次に考え方を説明します。
-
性能を優先する表に定義したインデクスを格納しているRDエリア
性能を優先するインデクス格納用RDエリアは,全ページをグローバルバッファに常駐できる面数にしてください。
-
その他のRDエリア
その他のインデクス格納用RDエリアは,全ページの60%以上が常駐できる面数にすることをお勧めします。この割合でもメモリに余裕がない場合は,リーフページ以外のページが常駐できるように,全ページの15%以上の面数にすることをお勧めします。
- [表特性別のポイント]
-
マスタ表および採番表は,データ量が少なく,すべてのデータが偏りなくアクセスされるため,インデクスは全ページを常駐してください。
- [こんなときは]
-
RDエリアに複数のインデクスが格納されている場合,特定のインデクスについて優先的にグローバルバッファを割り当てたいときは,インデクス用グローバルバッファを指定してください。インデクス用グローバルバッファは,システム共通定義のpdbufferオペランドの-iオプションで指定します。詳細は,マニュアル「HiRDB システム定義」の「グローバルバッファに関するオペランド」を参照してください。
ただし,サーバ内の横分割表に定義した分割インデクスの場合は,インデクス用グローバルバッファを使用しないで,格納先RDエリアをほかのインデクスとは分けてください。インデクス用グローバルバッファにすると,サーバ内にある複数の格納先RDエリアのページが,1つのグローバルバッファに割り当てられるため,バッファ競合,およびそれに伴う排他待ちが発生する確率が高くなります。
(2) 表のバッファ面数
(a) メモリに余裕がある場合
表格納用RDエリアの全ページをグローバルバッファに常駐できる面数にしてください。
(b) メモリに余裕がない場合
メモリに余裕がない場合は,性能の優先度によって,バッファに常駐する面数を設計してください。次に考え方を説明します。
-
性能を優先する表を格納したRDエリアの場合
表格納用RDエリアの全ページをグローバルバッファに常駐できる面数にしてください。
-
その他のRDエリアの場合
その他の表格納用RDエリアは,全ページの50%以上が常駐できる面数にすることをお勧めします。この割合でもメモリに余裕がない場合は,全ページの5%以上の面数にすることをお勧めします。
- [特性別のポイント]
-
マスタ表および採番表は,データ量が少なく,すべてのデータが偏りなくアクセスされるため,表は全ページを常駐してください。
(3) LOB用RDエリア(ディレクトリページ)のバッファ面数
LOB用RDエリアのディレクトリページに割り当てるグローバルバッファは,システム共通定義のpdbufferオペランドの-rオプションで指定します。LOB用RDエリアのすべてのディレクトリページが常駐できる面数にしてください。
ディレクトリページはRDエリアの管理情報を格納するページであるため,データページよりもアクセスする頻度が高いです。LOB用RDエリアのデータページよりも,LOB用RDエリアのディレクトリページの方を優先的にグローバルバッファへ割り当ててください。ディレクトリページ数は,全ページ数の0.2%を目安にしてください。詳細なページ数の計算式は,マニュアル「HiRDB システム導入・設計ガイド」の「ユーザLOB用RDエリアの容量の見積もり」を参照してください。
(4) LOB用RDエリア(データページ)のバッファ面数
LOB用RDエリアのデータページに割り当てるグローバルバッファは,システム共通定義のpdbufferオペランドの-bオプションで指定します。
次の場合に,このバッファを割り当てると性能が良くなります。
-
同じBLOBデータに複数回アクセスする業務の場合
同じBLOBデータへアクセスする業務が継続している間は,そのBLOBデータをバッファに常駐させると効率が良くなります。例えば,登録したデータを登録日のうちに処理する場合は,1日分の登録データが常駐できるサイズにすることをお勧めします。メモリに余裕がない場合は,メモリが使用できる範囲で面数を決定してください。
-
LOB用RDエリアにプラグインインデクスを格納している場合
LOB用RDエリアにプラグインインデクスを格納している場合は,同じページを複数回アクセスすることが多いため,バッファを割り当てることをお勧めします。メモリが使用できる範囲で面数を決定してください。