Hitachi

ノンストップデータベース HiRDB Version 10 システム運用ガイド(Windows(R)用)


26.5.8 グローバルバッファの定義(影響分散スタンバイレス型系切り替え機能限定)

影響分散スタンバイレス型系切り替え機能を使用する場合,ユニット単位でグローバルバッファを割り当てられます。

影響分散スタンバイレス型系切り替え機能を適用するバックエンドサーバに配置されている,RDエリア,又はインデクスに対して,グローバルバッファを割り当てるには,pdbufferオペランドの-cオプション(共用化オプション)を指定します。-cオプションを指定して割り当てたグローバルバッファをユニット単位のグローバルバッファといい,ユニット単位のグローバルバッファには次の特長があります。

〈この項の構成〉

(1) ユニット単位のグローバルバッファ設計手順

最初に,共用化設計とするか非共用化設計とするかを選択します。系切り替えで縮退する場合のグローバルバッファ設計には次の考え方があります。

  1. 共用化設計

    縮退時,受け入れユニットのグローバルバッファ資源を共用することでメモリを有効に利用します。これを共用化設計といいます。共用化設計には次の特徴があります。

    • メリット:縮退時には受け入れユニットのグローバルバッファ資源を共用利用するのでメモリ効率が良い

    • デメリット:縮退時,共用するサーバ数に対応してバッファヒット率は低下する

  2. 非共用化設計

    縮退時にだけ使用するグローバルバッファ資源を受け入れユニットに確保しておき,切り替え時はそれを使用します。これを非共用化設計といいます。非共用化設計には次の特徴があります。

    • メリット:縮退時も縮退前と同じバッファ資源数を使用できるのでヒット率を維持できる

    • デメリット:縮退時用のグローバルバッファ資源を受け入れユニットすべてに確保するため,メモリ効率が悪い

影響分散スタンバイレス型系切り替え機能の目的はリソース共有,負荷分散にあるため,「1. 共用化設計」をお勧めします。メモリを効率的に利用できるからです。

非共用化設計の場合,受け入れユニットすべてにサーバ専用のグローバルバッファを確保します。そのため,HAグループ全体で,通常のグローバルバッファ用の共用メモリ見積もり値を,HAグループを構成するユニット数で乗算した分のグローバルバッファ用共用メモリ量が必要となります。見積もりを満足する共用メモリがあれば縮退時にも性能を維持できるため,「2. 非共用化設計」を選んでください。

(a) 共用化設計の手順

ここではグローバルバッファの共用を行う場合の設計手順について説明します。

  1. 同じバッファプールを共用するRDエリアの決定

    • 同じ種類のRDエリア同士で共用する

      データ格納RDエリア,インデクス格納RDエリア,LOB用RDエリアなど,同じ種類のRDエリアをpdbufferの-rオプションで指定し,共用するようにします。このとき同じページサイズのRDエリア,又は同じアクセス頻度のRDエリアで共用するとメモリ効率が良くなります。

    • 横分割した表,又はインデクスのRDエリアで共用する

      横分割した表格納RDエリア,又は横分割したインデクスのインデクス格納RDエリアをpdbufferの-rオプションで指定して共用するようにします。横分割した表とインデクスが同じRDエリアに格納されている場合はpdbuffer -iオプションを指定してインデクス専用バッファを割り当てます。

    また,共用を組むRDエリアのサーバ配置,及びユニット配置によって次の特長が得られます。特長を参考にして共用するRDエリアを選択してください。

    • 異なるユニットに配置されたサーバのRDエリアを共用した場合

      縮退前はグローバルバッファを占有して使用できるので縮退前の性能を重視した割り当てができます。ただし,縮退時のグローバルバッファ資源割り当てがユニット間で不均衡となります。

    • 同一ユニットに配置されたサーバのRDエリア,及び異なるユニットに配置されたサーバのRDエリアで共用した場合

      縮退時のバッファ割り当てをユニット間で均等とする設計ができます。

  2. 共用するグローバルバッファのバッファ面数の決定

    -nオプションで指定するバッファ面数は,共用するHAグループのサーバ間で均等に分配して使用します。そのためバッファ面数が不足しないように共用するサーバ数に見合ったバッファ面数を設定する必要があります。次の式を目安にバッファ面数を決定してください。

    1サーバでの必要面数×(ホストBES数+ゲストBES数)

なお,縮退時も縮退前のバッファ性能を必用とするRDエリアがある場合には,そのRDエリアだけは「非共用化設計の手順」を参考にサーバ専用のグローバルバッファを割り当ててください。

(b) 非共用化設計の手順

ここではグローバルバッファの共用をしない場合の設計手順について説明します。

サーバ専用のグローバルバッファは一つのRDエリアに対して割り当てる方法と,同じサーバに属する複数のRDエリアに割り当てる方法があります。

  • 一つのRDエリア専用に割り当てる場合

    pdbufferの-rオプションに一つのRDエリアを指定します。ほかのRDエリアとの競合がないので最も性能を重視した割り当てができます。なお,pdbufferの-iオプションに非分割インデクスを指定して,インデクス専用バッファを割り当てても同じ効果が得られます。

  • 同じサーバに属する複数のRDエリアに割り当てる場合

    pdbufferの-rオプションに同じサーバに属する複数のRDエリアを指定します。指定するRDエリアの種類はデータ格納RDエリア,インデクス格納RDエリア,LOB用RDエリアなど,同じ種類のRDエリアを指定してください。

(2) RDエリア用,及びLOB用グローバルバッファの割り当て(-rオプション又は-bオプション指定)

RDエリア用,及びLOB用のユニット単位のグローバルバッファの割り当ては,指定するRDエリアの組み合わせによって,4種類に分類されます。グローバルバッファの共用形態別の推奨条件(-rオプション又は-bオプション指定)を次の表に示します。

表26‒16 グローバルバッファの共用形態別の推奨条件(-rオプション又は-bオプション指定)

指定方法(-r又は-bで指定したRDエリアの組み合わせ)

バッファ共用形態

メリット

推奨条件

異なるサーバのRDエリア

同じユニットのRDエリア

異なるユニットのRDエリア

なし

なし

なし

非共用

他サーバと共用しないため,多重障害時でも定常時のバッファ性能を維持できる

すべての受け入れユニットにバッファを確保するためメモリに余裕がある環境で,縮退時も縮退前のバッファ性能を維持したいRDエリアに対する適用をお勧めします。

あり

あり

なし

ユニット内サーバ共用

多重障害でも定常時のバッファ性能を維持できる

非共用タイプ同様縮退時も縮退前のバッファ性能を維持できますが,初回切り替え時のメモリ効率が悪いので非共用タイプをお勧めします。

あり

なし

あり

ユニット間サーバ共用

  • 現用系のバックエンドサーバでは指定バッファ面数をすべて使用できる

  • 縮退時は受け入れユニットの資源を共用するのでメモリ効率が良い

現用時の性能を重視し,縮退時にバッファ資源の共用を実現したい場合の適用をお勧めします。

あり

あり

あり

ユニット内ユニット間サーバ共用

  • 縮退時は受け入れユニットの資源を共用するのでメモリ効率が良い

  • 共用サーバ数を均等にすることで縮退時の負荷分散を均等に設計できる

縮退時,バッファ資源の共用,及び均等負荷分散を実現したい場合の適用をお勧めします。

次に示す-r,-b指定のバッファの設計指針を参考に適切な共用形態を選択してください。影響分散スタンバイレス型系切り替え機能はリソース共有,負荷分散が目的でもあるため,ユニット間で共用する構成となるユニット間サーバ共用,又はユニット内ユニット間サーバ共用をお勧めします。縮退時に性能を低下させたくない場合は,非共用,又はユニット内サーバ共用としてください。

-r,-b指定のバッファの設計指針
  1. メモリに余裕のある環境で縮退時もバッファヒット率を低下させたくないRDエリアの場合:非共用,又はユニット内サーバ共用を選択します。

  2. 現用時はバッファ資源を特定のサーバで独占して使用し,縮退時はほかのサーバと共用したい場合:ユニット間サーバ共用を選択します。

  3. 1.及び2.のどちらにも当てはまらない場合:ユニット内ユニット間サーバ共用を選択します。

(a) 非共用グローバルバッファの割り当て方法

一つのバックエンドサーバに属するRDエリアだけをpdbufferオペランドの-rオプション,又は-bオプションに指定します。システム構成例を次に示します。

●システム構成例

[図データ]

●グローバルバッファの定義

pdbuffer -a gbuf01 -r RDAREA11,RDAREA12 -n 2000 -c
pdbuffer -a gbuf02 -r RDAREA21 -n 1000 -c
pdbuffer -a gbuf03 -r RDAREA31 -n 1000 -c
〔説明〕

同一サーバに属するRDエリアだけをpdbufferオペランドの-rオプション,又は-bオプションに指定します。

BES11,BES21,BES31に非共用バッファgbuf01,gbuf02,gbuf03を割り当てます。

系切り替え時もBES11専用のgbuf01を使用するのでヒット率は低下しませんが,すべての受け入れユニットで切り替え時使用するためのバッファが確保されるのでメモリを多く消費します。

  • 受け入れユニットすべてに同一グローバルバッファが作成されます。このグローバルバッファは代替されるまで使用されません。

  • メモリ効率を向上するためには同じページサイズのRDエリアを指定するようにします。

(b) ユニット内サーバ共用のグローバルバッファの割り当て方法

使用できる共用メモリが十分にある環境で,多点障害時でも定常時と同じバッファ性能を維持したい場合に指定します。同一ユニット内のバックエンドサーバに配置されたRDエリアをpdbufferオペランドの-rオプション,又は-bオプションに指定します。

●システム構成例

[図データ]

●グローバルバッファの定義

pdbuffer -a gbuf01 -r RDAREA11,RDAREA12 -n 1000 -c
pdbuffer -a gbuf02 -r RDAREA21,RDAREA22 -n 1000 -c
pdbuffer -a gbuf03 -r RDAREA31,RDAREA32 -n 1000 -c
〔説明〕

同一ユニット内のサーバに配置されたRDエリアをpdbufferオペランドの-rオプション,又は-bオプションに指定します。

ユニット内サーバ共用のグローバルバッファgbuf01,gbuf02,gbuf03を割り当てます。

系切り替え時もgbuf01を使用するのでヒット率は低下しませんが,すべての受け入れユニットに切り替え時使用するためのグローバルバッファが確保されるのでメモリを多く消費します。

  • 受け入れユニットすべてに同一グローバルバッファが作成されます。このグローバルバッファは代替されるまで使用されません。

  • この指定のグローバルバッファは複数サーバ間で共用して使用されます。

  • pdbufferオペランドの-lオプション省略時のバッファサイズは,指定したRDエリアの内の最大ページサイズとなります。

(c) ユニット間サーバ共用のグローバルバッファの割り当て方法

同一ユニット内のサーバに配置されたRDエリアを指定しないで,異なるユニットのサーバに配置されたRDエリアをpdbufferオペランドの-rオプション,又は-bオプションに指定します。

●システム構成例

[図データ]

●グローバルバッファの定義

pdbuffer -a gbuf01 -r RDAREA11,RDAREA21,RDAREA31 -n 1000 -c
〔説明〕

異なるユニットに配置されたサーバのRDエリアを指定します。

同一ユニット内のサーバに配置されたRDエリア間で共用化しないで,異なるユニットのサーバに配置されたRDエリアを共用化します。

縮退前はgbuf01のリソース(バッファ数)をBES11で占有して使用できます。縮退時はBES21とBES11で共用するので使用できるリソース(バッファ数)は半分になります。

  • 移動先が一つのユニットになるのでそのユニットのグローバルバッファだけ負荷が高くなります。ユニット間サーバ共用バッファを複数定義し各ユニットの負荷が均等になるように設計してください

  • 受け入れユニットすべてに同一グローバルバッファが作成されます。

  • この指定のグローバルバッファは現用時には一つのサーバで占有して使用され,縮退時には複数サーバ間で共用して使用されます。

  • pdbufferオペランドの-lオプション省略時のバッファサイズは指定したRDエリアの内の最大ページサイズとなります。

(d) ユニット内ユニット間サーバ共用のグローバルバッファの割り当て方法

ユニット内ユニット間サーバ共用のRDエリアをpdbufferオペランドの-rオプション,又は-bオプションに指定します。

●システム構成例

[図データ]

●グローバルバッファの定義

pdbuffer -a gbuf01 -r RDAREA11,RDAREA12,RDAREA21,RDAREA22,RDAREA31,RDAREA32 -n 1000 -c
〔説明〕

ユニット内ユニット間サーバ共用のRDエリアをpdbufferオペランドの-rオプション,又は-bオプションに指定します。

ユニット内ユニット間サーバ共用のRDエリアでグローバルバッファを共用することで,縮退時の負荷分散が均等になるようなバッファを割り当てます。定常時は各ユニットが二つのバックエンドサーバ間でgbuf01を共用するので一つのバックエンドサーバに割り当てられるバッファ面数は半分です。縮退時は三つのバックエンドサーバ間でgbuf01を共用するので一つのバックエンドサーバに割り当てるバッファ面数は各ユニットが1/3と均等になります。

  • 縮退時に受け持つサーバ数が各受け入れユニットで均等になるように設計してください。

  • 受け入れユニットすべてに同一グローバルバッファが作成されます。

  • この指定のグローバルバッファは複数サーバ間で共用して使用されます。

  • pdbufferオペランドの-lオプション省略時のバッファサイズは指定したRDエリアの内の最大ページサイズとなります。

(3) インデクス用グローバルバッファの割り当て方法(-iオプション指定)

特定のインデクスのインデクスページをバッファリングしたい場合にインデクス用グローバルバッファを割り当てます。インデクス格納RDエリアにそのインデクスしか格納されていない場合には,そのRDエリアにRDエリア用グローバルバッファ(-rオプション指定)を割り当てても同じ効果が得られます。インデクスに対するユニット単位グローバルバッファの割り当ては,指定するインデクスのインデクス格納RDエリアの配置によって4種類に分類されます。グローバルバッファの共用形態別の推奨条件(-iオプション指定)を次の表に示します。

表26‒17 グローバルバッファの共用形態別の推奨条件(-iオプション指定)

指定方法(-iオプションで指定したインデクス格納用RDエリア)

インデクス分割形式

バッファ共用形態

メリット

推奨条件

異なるサーバのRDエリア

同一ユニットのRDエリア

異なるユニットのRDエリア

なし

なし

なし

非分割で同一サーバ内分割

非共用

他サーバと共用しないため,多重障害時でも定常時のバッファ性能を維持できる

すべての受け入れユニットにバッファを確保するためメモリに余裕がある環境で,縮退時も縮退前のバッファ性能を維持したいインデクスに対する適用をお勧めします。

あり

あり

なし

同一ユニット内分割

ユニット内サーバ共用

多重障害でも定常時のバッファ性能を維持できる

すべての受け入れユニットにバッファを確保するためメモリに余裕がある環境で,縮退時も縮退前のバッファ性能を維持したいインデクスに対する適用をお勧めします。

あり

なし

あり

ユニット間分割で同一ユニット内分割なし

ユニット間サーバ共用

  • 現用系のバックエンドサーバでは指定バッファ面数をすべて使用できる

  • 縮退時は受け入れユニットの資源を共用するのでメモリ効率が良い

現用時の性能を重視し,縮退時にバッファ資源を共用したい場合の適用をお勧めします。

あり

あり

あり

ユニット間分割で同一ユニット内分割あり

ユニット内ユニット間サーバ共用

  • 縮退時は受け入れユニットの資源を共用するのでメモリ効率が良い

  • 共用サーバ数を均等にすることで縮退時の負荷分散を均等に設計できる

縮退時,バッファ資源の共用,及び均等負荷分散を実現したい場合の適用をお勧めします。

次に示す-iオプション指定のバッファ設計指針を参考にインデクス専用バッファを割り当てるかどうか選択してください。

-iオプション指定のバッファ設計指針
  1. 非分割インデクス,同一サーバ内分割インデクス,又は同一ユニット内分割インデクスの場合:同一HAグループの各ユニットにグローバルバッファを確保できるだけメモリに余裕があれば専用バッファを定義します。

  2. 1.に当てはまらない場合:インデクス用グローバルバッファを定義します。共用するサーバに見合ったバッファ面数を割り当ててください。

(a) 非分割インデクス用グローバルバッファの割り当て方法

非分割インデクスをpdbufferオペランドの-iオプションで指定します。

●システム構成例

[図データ]

●グローバルバッファの定義

pdbuffer -a gbuf01 -i USER01.INDEX01 -n 200 -c
〔説明〕

非分割インデクスUSER01.INDEX01を指定します。

非分割インデクスの共用グローバルバッファへの割り当て例です。ほかのサーバとはグローバルバッファを共用しないで,占有します。系切り替え時もBES11専用のgbuf01を使用するのでヒット率は低下しませんが,すべての受け入れユニットに対して切り替え時,使用するためのバッファが確保されるのでメモリを多く消費します。

受け入れユニットすべてに同じグローバルバッファが作成されます。このバッファは代替されるまで使用されません。

(b) 同一サーバ内分割インデクス用グローバルバッファの割り当て方法

同一サーバ内に分割されたインデクスをpdbufferオペランドの-iオプションで指定します。

●システム構成例

[図データ]

●グローバルバッファの定義

pdbuffer -a gbuf01 -i USER01.INDEX01 -n 1000 -c
〔説明〕

サーバ内横分割インデクスUSER01.INDEX01を指定します。

同一サーバ内に分割されたインデクスの共用グローバルバッファへの割り当て例です。ほかのサーバとは共用しないで,占有します。系切り替え時もBES11専用のgbuf01を使用するのでヒット率は低下しませんが,すべての受け入れユニットに切り替え時使用するためのバッファが確保されるのでメモリを多く消費します。

  • 受け入れユニットすべてに同じグローバルバッファが作成されます。このグローバルバッファは代替されるまで使用されません。

  • インデクス格納用RDエリアのページサイズを同じにすることでメモリ効率が向上します。

(c) 同一ユニット内分割インデクス用グローバルバッファの割り当て方法

同一ユニット内に分割されたインデクスをpdbufferオペランドの-iオプションで指定します。

●システム構成例

[図データ]

●グローバルバッファの定義

pdbuffer -a gbuf01 -i USER01.INDEX01 -n 1000 -c
〔説明〕

同一ユニット内に分割されたインデクスの共用グローバルバッファへの割り当て例です。系切り替え時もgbuf01を使用するのでヒット率は低下しませんが,すべての受け入れユニットに切り替え時使用するためのグローバルバッファが確保されるのでメモリを多く消費します。

  • 受け入れユニットすべてに同じグローバルバッファが作成されます。このグローバルバッファは代替されるまで使用されません。

  • この指定のグローバルバッファは複数サーバ間で共用されます。

  • インデクス格納用RDエリアのページサイズを同じにすることでメモリ効率が向上します。

  • pdbufferオペランドの-lオプション省略時のバッファサイズは指定したインデクス格納用RDエリア内の最大ページサイズとなります。

(d) ユニット間分割で同一ユニット内分割なしインデクス用グローバルバッファの割り当て方法

異なるユニット間のサーバに分割されたインデクスをpdbufferオペランドの-iオプションで指定します。

●システム構成例

[図データ]

●グローバルバッファの定義

pdbuffer -a gbuf01 -i USER01.INDEX01 -n 1000 -c
〔説明〕

異なるユニット間のサーバに横分割されたインデクスUSER01.INDEX01を指定します。

ユニット間分割で同一ユニット内分割なしのインデクスに対するグローバルバッファの割り当て例です。縮退前はgbuf01のリソース(バッファ数)をBES11で占有します。縮退時はBES21とBES11で共用するので使用できるリソース(バッファ数)は半分となります。

  • 移動先が一つのユニットになるのでそのユニットのグローバルバッファだけ負荷が高くなります。ユニット間サーバ共用バッファを複数定義し,各ユニットの負荷が均等になるように設計してください。

  • 受け入れユニットすべてに同じグローバルバッファが作成されます。

  • この指定のグローバルバッファは現用時には一つのサーバで占有され,縮退時には複数サーバ間で共用されます。

  • インデクス格納用RDエリアのページサイズを同じにすることでメモリ効率が向上します。

  • pdbufferオペランドの-lオプション省略時のバッファサイズは,指定したインデクス格納用RDエリアの内の最大ページサイズとなります。

(e) ユニット間分割で同一ユニット内分割ありインデクスのグローバルバッファの割り当て方法

ユニット間分割で同一ユニット内で分割されたインデクスをpdbufferオペランドの-iオプションで指定します。

●システム構成例

[図データ]

●グローバルバッファの定義

pdbuffer -a gbuf01 -i USER01.INDEX01 -n 1000 -c
〔説明〕

ユニット間分割ありのサーバ間横分割インデクスUSER01.INDEX01を指定します。

ユニット間分割で同一ユニット内で分割されたインデクスの共用グローバルバッファへの割り当て例です。定常時は各ユニットが二つのバックエンドサーバ間でgbuf01を共用するので一つのバックエンドサーバに割り当てられるバッファ面数は半分です。縮退時は三つのバックエンドサーバ間でgbuf01を共用するので一つのバックエンドサーバに割り当てるバッファ面数は各ユニットが1/3と均等になります。

  • 縮退時受け持つサーバ数が各受け入れユニットで均等になるように設計してください。

  • 受け入れユニットすべてに同じグローバルバッファが作成されます。

  • この指定のグローバルバッファは複数サーバ間で共用されます。

  • インデクス格納用RDエリアのページサイズを同じにすることでメモリ効率が向上します。

  • pdbufferオペランドの-lオプション省略時のバッファサイズは指定したインデクス格納用RDエリアの内の最大ページサイズとなります。

(4) OTHER用グローバルバッファの割り当て方法(-oオプション指定)

OTHER用グローバルバッファは,影響分散スタンバイレス型系切り替え機能の適用ユニットすべてに確保されます。次に示すように割り当てられます。

(a) OTHER用グローバルバッファの推奨条件

  • オンライン中でRDエリアを追加するシステム

  • アクセス頻度が少ないRDエリア

  • アクセスページ数の少ないRDエリア

  • 格納ページ数が非常に多いRDエリア(バッファヒットを期待しないRDエリア)

(b) OTHER用グローバルバッファの注意事項

  • ユニットに確保したOTHER用グローバルバッファ資源はOTHER用バッファを割り当てたサーバ間で均等に分割して使用します。したがって,使用するサーバ数に見合ったバッファ面数をpdbufferオペランドの-nオプションで指定するようにしてください。

  • オンライン中でRDエリアを追加するシステムでは,今後追加が予想されるRDエリアのページサイズを考慮し,pdbufferオペランドの-lオプションでバッファサイズを設定してください。

(c) OTHER用グローバルバッファの割り当て方法の例

pdbufferオペランドの-oオプションを指定します。

●システム構成例

[図データ]

●グローバルバッファの定義

pdbuffer -a gbuf01 -r RDAREA11 -n 500 -c
pdbuffer -a gbuf02 -o -n 1000 -c
〔説明〕

pdbufferオペランドの-oオプションと-cオプションを指定します。

RDAREA11に専用バッファを割り当て,そのほかのRDエリアにはOTHER用バッファを割り当てます。OTHER用バッファは影響分散スタンバイレス型系切り替え機能の適用ユニットすべてに作成されます。

(5) 構成変更時のグローバルバッファの割り当て(データベース構成変更ユティリティ)

データベース構成変更ユティリティの制御文のglobalbufferオペランドに,既にあるグローバルバッファ名を指定して実施します。グローバルバッファはpdbuflsコマンドで確認できます。

●システム構成例

[図データ]

●構成変更定義

create rdarea RDAREA13 globalbuffer gbuf01 server name BES11
        :
〔説明〕

追加RDエリアに共用グローバルバッファgbuf01を割り当てます。追加したRDエリアは系切り替え時もgbuf01を使用します。

〔設計指針〕
  • 系の切り替え時,及び系の切り戻し時もglobalbufferオペランドで指定したグローバルバッファを割り当てます。

  • インデクス用グローバルバッファ,及びLOB用グローバルバッファは割り当てられません。

  • 指定するグローバルバッファの長さは,追加するRDエリアのページ長より長くなければなりません。グローバルバッファ長は,pdbuflsコマンドで確認できます。

  • ここで指定したグローバルバッファの割り当ては,サーバの正常終了(HiRDBシステムの正常終了,計画停止,ユニットの正常終了,又はサーバ単独の正常終了)時に無効となります。そのため,次回のサーバの正常開始時には,あらかじめシステム共通定義のpdbufferオペランドでグローバルバッファを割り当てておかなければなりません。ただし,-oオプション指定のグローバルバッファを割り当てている場合はそのグローバルバッファに割り当てますのでシステム共通定義を変更する必要はありません。

  • HiRDBがグローバルバッファの割り当てに失敗した場合,RDエリアは追加されません。