6.8.1 グローバルバッファ
グローバルバッファとは,ディスク上のRDエリアに格納されているデータを入出力するためのバッファのことで,共用メモリ上に確保されます。データを更新するためにバッファ上で更新され,データベースには未反映のバッファを更新バッファといいます。また,データを参照するためのバッファ,及びデータベースに反映済みのバッファを参照バッファといいます。
データを格納するRDエリア又はインデクスには,必ずグローバルバッファを割り当てます。グローバルバッファの種類を次の表に示します。
グローバルバッファの種類 |
説明 |
---|---|
データの入出力に使用されるグローバルバッファです。データ用グローバルバッファはRDエリア単位に割り当てます。 |
|
インデクスデータの入出力に使用されるグローバルバッファです。インデクス用グローバルバッファはインデクス単位に割り当てます。 |
|
LOB属性のデータの入出力に使用されるグローバルバッファです。LOB用グローバルバッファはLOB用RDエリア単位に割り当てます。 |
これらのグローバルバッファを組み合わせると性能を向上できます。例えば,データ用グローバルバッファとインデクス用グローバルバッファを分けて定義すると,データの検索とインデクスの検索を同時に実行しても互いが独立して動作します。そのため,大量データの全件検索時などでもインデクスの入出力回数を削減でき,処理時間を短縮できます。グローバルバッファの概念を次の図に示します。
(1) グローバルバッファを割り当てる単位
-
すべてのRDエリアにデータ用グローバルバッファを割り当てる必要があります。一つのグローバルバッファには,一つ以上のRDエリアを割り当ててください。
-
必要に応じてインデクスをインデクス用グローバルバッファに割り当ててください。
-
必要に応じてLOB用RDエリアをLOB用グローバルバッファに割り当ててください。
-
システム用RDエリアにもグローバルバッファを割り当ててください。
-
グローバルバッファの設計方針(グローバルバッファをどのようにRDエリアに割り当てるか)については,マニュアル「HiRDB システム導入・設計ガイド」を参照してください。
(2) グローバルバッファの割り当て方法
pdbufferオペランドでグローバルバッファを割り当てます。pdbufferオペランドでのグローバルバッファの割り当て例を次に示します。
- (例)
pdbuffer -a gbuf01 -r RDAREA01,RDAREA02 -n 1000 1 pdbuffer -a gbuf01 -r LOBAREA01 -n 1000 2 pdbuffer -a gbuf01 -i USER01.INDX01 -n 1000 3 pdbuffer -a gbuf01 -b LOBAREA01 -n 1000 4
- 〔説明〕
-
-
RDエリア(RDAREA01,RDAREA02)にデータ用グローバルバッファを割り当てます。
-
LOB用RDエリア(LOBAREA01)にデータ用グローバルバッファを割り当てます。
-
インデクス(USER01.INDX01)にインデクス用グローバルバッファを割り当てます。
-
LOB用RDエリア(LOBAREA01)にLOB用グローバルバッファを割り当てます。
-
pdbufferオペランドについては,マニュアル「HiRDB システム定義」を参照してください。
(3) グローバルバッファの動的変更
グローバルバッファを追加,変更,又は削除するにはpdbufferオペランドを変更する必要があるため,HiRDBを一度停止する必要があります。しかし,HiRDB Advanced High Availabilityを導入すると,HiRDBの稼働中にpdbufmodコマンドでグローバルバッファを追加,変更,又は削除できます。これをグローバルバッファの動的変更といいます。例えば,次に示す場合にグローバルバッファを動的変更してください。
-
追加したRDエリアにグローバルバッファを割り当てる場合
-
RDエリアの割り当て先グローバルバッファを変更する場合
-
グローバルバッファのチューニングの結果,グローバルバッファの定義を変更する場合
グローバルバッファの動的変更については,マニュアル「HiRDB システム運用ガイド」を参照してください。