スケーラブルデータベースサーバ HiRDB Version 8 システム定義(Windows(R)用)

[目次][索引][前へ][次へ]

2.2.45 グローバルバッファに関するオペランド

218) pdbuffer -a グローバルバッファ名
   {-r RDエリア名〔,RDエリア名〕… |
    -b RDエリア名〔,RDエリア名〕… |
    -o |
    -i 認可識別子.インデクス識別子 }
    -n バッファ面数〔-l バッファサイズ〕
   〔-m 同時実行最大プリフェッチ数〕
   〔-p 一括入力最大ページ数〕
   〔-w デファードライトトリガ時の更新ページ出力比率〕
   〔-c〕
   〔-y デファードライトトリガ契機の更新バッファ面数〕
グローバルバッファをどのRDエリアに割り当てるかを定義します。グローバルバッファとは,RDエリアへ表のデータを入出力するときにデータを確保する領域のことであり,共用メモリ上に確保されます。
すべてのRDエリアにグローバルバッファを割り当ててください。グローバルバッファを割り当てないRDエリアに対しては,SQL文及びpdopenコマンドを実行できません。グローバルバッファの設計方法については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。
《オペランドの規則》
pdbufferオペランドは2,000,000個まで指定できます。HiRDB/パラレルサーバの場合は1サーバ当たり2,000,000個までになります。ただし,全体で2,147,483,647個が上限になります。
《指定値のチューニング方法》
グローバルバッファのチューニング方法については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。
《オペランドの省略値》
pdbufferオペランドを省略すると,次に示す条件でグローバルバッファを割り当てます。
  • グローバルバッファ名:gbuf00
  • グローバルバッファの種別:-oオプション指定相当
  • グローバルバッファサイズ:6メガバイト
  • バッファ面数:6メガバイト÷RDエリアのページ長の最大値
 
-a グローバルバッファ名
〜<識別子>((1〜16文字))
グローバルバッファの名称を指定します。同じ名称は指定できません。
 
-r RDエリア名〔,RDエリア名〕…
〜<識別子>((1〜30文字))
グローバルバッファを割り当てるRDエリアの名称を指定します。次に示すRDエリアの名称を指定してください。
  • マスタディレクトリ用RDエリア
  • データディクショナリ用RDエリア
  • データディレクトリ用RDエリア
  • ユーザ用RDエリア
  • データディクショナリLOB用RDエリア
  • ユーザLOB用RDエリア
  • レジストリ用RDエリア
  • レジストリLOB用RDエリア
  • リスト用RDエリア
注※
これらのLOB用RDエリアは,-bオプションのLOB用グローバルバッファも割り当てることをお勧めします(-rオプションと-bオプションの両方を指定します)。LOB用グローバルバッファを割り当てると性能が向上します。
《指定値の目安》
ページ長が同じか,又はページ長が近いRDエリアを同じグローバルバッファに割り当てると,入出力回数を削減できます。ただし,同じページ長のRDエリアでも,次に示すようなRDエリアは別々のグローバルバッファに割り当てた方が入出力回数を削減できます。
  • 用途の異なる表を格納するRDエリア
  • ランダムアクセスが多いRDエリアと順次アクセスが多いRDエリア
《オペランドの規則》
  • RDエリア名に半角英数字以外の文字を含む場合は引用符(")で囲んでください。
  • RDエリア名を引用符(")で囲んだ場合は英字の大文字と小文字が区別されますが,引用符で囲まない場合はすべて大文字として扱われます。
  • 一つのグローバルバッファには最大3200個のRDエリアを定義できます。
 
-b RDエリア名〔,RDエリア名〕…
〜<識別子>((1〜30文字))
LOB用グローバルバッファを割り当てるRDエリアの名称を指定します。次に示すRDエリアの名称を指定してください。
  • データディクショナリLOB用RDエリア
  • ユーザLOB用RDエリア
  • レジストリLOB用RDエリア
ここで指定したLOB用RDエリアは,-rオプションでも指定しておく必要があります。-bオプションの指定だけではLOB用RDエリアをアクセスできません。指定例を次に示します。
(例)
LOB用RDエリア(RDLOB01)に-r及び-bオプションのグローバルバッファを割り当てます。
 
    pdbuffer -a gbuf01 -r RDLOB01 -n 1000
    pdbuffer -a gbuf02 -b RDLOB01 -n 1000
備考
  • LOB用RDエリアにはディレクトリ部とデータ部があります。ディレクトリ部とデータ部はそれぞれ異なるグローバルバッファで管理しています。-r指定のグローバルバッファにはディレクトリ部がキャッシュされ,-b指定のグローバルバッファにはデータ部がキャッシュされます。このため,-r(又は-o)及び-bオプションを同時に指定する必要があります。
  • -r指定のグローバルバッファと-b指定のグローバルバッファは異なる用途のグローバルバッファのため,別々に見積もる必要があります。-r指定のグローバルバッファはディレクトリ部分だけをキャッシュするため,比較的小さくてもよいです。-b指定のグローバルバッファはLOBのデータ部をキャッシュするため,使用可能なメモリ容量及びヒット率を考慮して見積もってください。グローバルバッファの見積もり方法については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。
《指定値の目安》
次に示すようなLOB用RDエリアを指定します。
  • プラグインインデクスを格納するLOB用RDエリア
  • データ量が少なく,アクセス頻度が高いデータを格納するLOB用RDエリア
なお,一つのLOB用グローバルバッファには一つのLOB用RDエリアを割り当てることをお勧めします。
《オペランドの規則》
  • RDエリア名称が半角英数字以外の文字を含む場合は,引用符(")で囲んでください。
  • RDエリア名を引用符(")で囲んだ場合は英字の大文字と小文字が区別されますが,引用符で囲まない場合はすべて大文字として扱われます。
  • 一つのグローバルバッファには,最大3200個のLOB用RDエリアを定義できます。
《注意事項》
LOB用グローバルバッファは,プリフェッチ機能及びデファードライトトリガ機能を使用しません。したがって,-m,-p,及び-wオプションを指定する必要はありません。
 
-o
-rオプションで指定していないすべてのRDエリアに,グローバルバッファを割り当てる場合に指定します。-oオプションは1回だけ指定できます。2回以上指定した場合は最初の指定を有効とします。
 
-i 認可識別子.インデクス識別子
認可識別子:〜<識別子>((1〜8文字))
インデクス識別子:〜<識別子>((1〜30文字))
インデクス用グローバルバッファを割り当てるインデクスの名称(認可識別子.インデクス識別子)を指定します。
《指定値の目安》
使用頻度の高いインデクスを指定してください。使用頻度の高いインデクスにグローバルバッファを割り当てると,インデクスページのメモリ常駐度が上がり,入出力回数の削減効果が出ます。
特に,クラスタキー又はユニークキーに定義したインデクスをグローバルバッファに割り当てると効果が大きくなります。なお,クラスタキーのインデクス識別子はHiRDBが決めるため,表を定義した後にディクショナリ表(SQL_INDEXES表のINDEX_NAME列)を検索してインデクス識別子を確認してください。
また,すべてのインデクスをインデクス用のグローバルバッファに割り当てると,グローバルバッファ全体の使用効率が悪くなります。したがって,メモリ量に応じてグローバルバッファに割り当てるインデクスを厳選してください。
《オペランドの規則》
  • 「認可識別子.インデクス識別子」は,同じ名称で複数指定できません。
  • 認可識別子又はインデクス識別子に半角英数字以外の文字を含む場合は,認可識別子及びインデクス識別子をそれぞれ引用符(")で囲んでください。
  • 認可識別子及びインデクス識別子をそれぞれ引用符(")で囲んだ場合は,英字の大文字と小文字が区別されますが,引用符で囲まない場合は,すべて大文字として扱われます。
《注意事項》
  • -iオプションに指定したインデクスを格納しているRDエリアにもグローバルバッファを割り当てる必要があります。-rオプションでRDエリアを指定するか,又は-oオプションでグローバルバッファを割り当ててください。
    RDエリアには,ディレクトリ部(ディレクトリページ),データ部(表データのページ),及びインデクス部(インデクスページ)が格納されています。インデクス用グローバルバッファにはインデクス部だけがキャッシュされるため,ディレクトリ部とデータ部をキャッシュするための-r又は-o指定のグローバルバッファが必要になります。
  • DROP TABLE又はDROP INDEXを実行した場合,削除したインデクスに割り当てていたインデクス用グローバルバッファは使用されなくなります。また,削除したインデクスと同じ名称のインデクスを定義しても,そのインデクス用グローバルバッファは使用できません。そのインデクス用グローバルバッファを使用するには,HiRDBを一度正常終了して再度開始する必要があります。
  • HiRDBの開始時に存在しないインデクスを-iオプションに指定した場合,そのインデクス用グローバルバッファは割り当てられません。このとき,KFPH23014-Wメッセージが出力されます。
    また,HiRDBの開始後,-iオプションに指定したインデクスを定義しても,インデクス用グローバルバッファは使用できません。インデクス用グローバルバッファを使用するには,HiRDBを一度正常終了して再度開始する必要があります。
  • インデクス用グローバルバッファのバッファサイズより大きなページ長のインデクス格納RDエリアをALTER TABLEで追加した場合,追加したRDエリアのインデクスページはインデクス用グローバルバッファにキャッシュされません。インデクス用グローバルバッファにキャッシュするには,HiRDBを一度正常終了して再度開始する必要があります。
  • データベース構成変更ユティリティのRDエリアの再初期化で,RDエリアのページ長をインデクス用グローバルバッファのバッファサイズより大きくした場合,再初期化したRDエリアのインデクスページはインデクス用グローバルバッファにキャッシュされません。インデクス用グローバルバッファにキャッシュするには,HiRDBを一度正常終了して再度開始する必要があります。
 
-n バッファ面数
〜<符号なし整数>
  • 32ビットモードの場合:((4〜460000))
  • 64ビットモードの場合:((4〜1073741824))
グローバルバッファの面数を指定します。このオプションは必ず指定してください。
《指定値の目安》
  • 必要以上に大きな値を指定すると,入出力回数は減るがバッファを検索するためのオーバヘッドが増えます。
  • グローバルバッファは,共用メモリに確保するので必要以上に大きくするとほかのメモリの使用時にページングが多発し,性能が低下します。
  • シンクポイント取得のタイミング,及びグローバルバッファ内の更新ページの比率によっては,データベースへの出力が集中します。そのため,入出力回数のバランスも考慮する必要があります。
  • バッファ面数が大き過ぎると共用メモリを確保できないことがあるので注意してください。
  • バッファ面数を拡張する場合,共用メモリの割り当て先は,ページングファイルにすることを推奨します。運用ディレクトリ下のファイルを割り当てると,NTFSのキャッシュフラッシュの影響を受けやすくなり,OSのスローダウンを引き起こす場合があります。
    共用メモリの割り当て先は,pdntenvコマンドの-shmfileオプションで設定できます。pdntenvコマンドについては,マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。
  • グローバルバッファの面数は,次の表から求めてください。
    条件 グローバルバッファ面数の求め方
    -r又は-oオプション指定のグローバルバッファの場合※1 HiRDB/シングルサーバの場合 同時に発生するSQL処理要求の数×1SQLで使用するページ数(3〜6程度)
    HiRDB/パラレルサーバの場合 同時実行ユーザ数×1トランザクション内の平均同時アクセス表数×3×n※2
    -bオプション指定のグローバルバッファの場合 LOB用RDエリアの総ページ数×常駐度※3(%)
    -iオプション指定のグローバルバッファの場合※1 インデクスの格納ページ数×常駐度※4(%)
注※1
最低限必要なバッファ面数は次のとおりです。バッファ面数にはこの値以上を指定するようにしてください。この値より小さい値を指定した場合はバッファ不足によるSQLエラーが発生することがあります。
  • HiRDB/シングルサーバの場合
    同時に発生するSQL処理要求の数×4
  • HiRDB/パラレルサーバの場合
    同時実行ユーザ数×1トランザクション内の平均同時アクセス表数×4
注※2
n=1として見積もったバッファ面数では,バッファのヒット率を高くできません。このため,係数としてどれくらいの余裕をバッファに持たせるか(バッファのヒット率をどのくらいにするか)を検討して指定してください。
注※3
常駐度は1(100%)が望ましいが,メモリ容量,データのアクセス頻度などを考慮して設定します。ユーザLOB用RDエリアの総ページ数,及びレジストリ用RDエリアの総ページ数については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。
注※4
常駐度は1(100%)が望ましいが,メモリ容量,インデクスの重要度などを考慮して設定します。インデクスの格納ページ数については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。
 
《指定値のチューニング方法》
バッファのヒット率がHiRDB稼働業務で80%以上となるように設定してください。バッファのヒット率は次に示す方法で確認できます。
  • 統計解析ユティリティ(グローバルバッファに関する統計情報)の「更新バッファヒット率」及び「参照バッファヒット率」で確認できます。
  • pdbuflsコマンドのヘッダ名HITで確認できます。
 
-l バッファサイズ
〜<符号なし整数>((4〜30の偶数))
グローバルバッファのバッファ1面のサイズをキロバイト単位で指定します。このオプションは-nオプションと一緒に指定します。
《指定値の目安》
通常,このオプションは省略してください。このオプションを省略すると,このグローバルバッファに割り当てたRDエリアの最大ページ長がバッファサイズになります。なお,HiRDB/パラレルサーバの場合はサーバ内のRDエリアの最大ページ長がバッファサイズになるため,サーバごとにバッファサイズが異なることがあります。
また,次に示す場合は指定値の変更を考えてください。
  • 将来,このオプションで指定した値を超えるページ長のRDエリアを追加したり,再初期化してRDエリアのページ長を大きくしたりすることがある場合,このオプションの指定値を大きめに設定しておくことをお勧めします。ただし,HiRDBを一度終了できる場合,HiRDBの次回開始時にはバッファサイズに最大ページ長が仮定されるため,このオプションの指定値を大きめに設定しておく必要はありません。
《オペランドの規則》
  • このオプションの指定値がRDエリアの最大ページ長より小さい場合は,RDエリアの最大ページ長がバッファサイズになります。
  • このオプションに奇数を指定した場合,バッファサイズは指定した値に1を加算した値になります。
《注意事項》
このオプションの値を変更しても,HiRDBを正常開始しないと,その値が反映されません。HiRDBを再開始した場合は,前回稼働時(変更前)のバッファサイズとなります。
 
-m 同時実行最大プリフェッチ数
〜<符号なし整数>((0〜95000))《0》
同時にプリフェッチ機能を使用する最大数を指定します。プリフェッチ機能は,rawI/O機能を使用して大量検索をする場合に入出力時間を削減する効果があります。
このオプションに0を指定するか,又は省略した場合は,プリフェッチ機能は動作しません。プリフェッチ機能を動作させるには,1以上を指定してください。
《指定値の目安》
指定値の設定は,このグローバルバッファに割り当てられたRDエリアの表の中で,プリフェッチ機能が適用されるSQLを同時に実行する回数を指定します。プリフェッチ機能が適用されるSQLを次に示します。ただし,3.に関しては実行数を2として算出します。
  1. インデクスを使用しないSELECT,UPDATE,DELETE文(=条件,IN条件を除く)
  2. インデクスを使用した昇順検索をするSELECT,UPDATE,DELETE文(=条件,IN条件を除く)
  3. クラスタキーを使用した昇順検索をするSELECT,UPDATE,DELETE文(=条件,IN条件を除く)
注※ 複数列インデクスの場合はインデクス定義で指定した順序
《注意事項》
プリフェッチ機能を使用する場合,グローバルバッファ用の共用メモリからグローバルバッファとは別に一括入力専用のバッファが確保されるため,再度共用メモリを見積もる必要があります。
プリフェッチ機能,及びグローバルバッファが使用する共用メモリの計算式については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。
 
-p 一括入力最大ページ数
〜<符号なし整数>((2〜256))《32》
プリフェッチ機能の一括入力最大ページ数を指定します。この指定は,-mオプションで1以上を指定したときだけ有効になります。
《指定値の目安》
共用メモリ量と削減効果のコストパフォーマンスから,指定の目安として次に示す計算式を満足するように指定します。
a×b=64〜128  (単位:キロバイト)
a:プリフェッチ対象表のデータ,又はインデクスが格納されているRDエリアのページ長
b:一括入力最大ページ数
 
-w デファードライトトリガ時の更新ページ出力比率
〜<符号なし整数>((0〜100))《20》
デファードライトトリガでの更新ページ出力比率をパーセントで指定します。デファードライトトリガについては,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。
このオプションに0を指定した場合は,デファードライトトリガでの更新ページ出力をしません。
《指定値の目安》
  • グローバルバッファごとの入出力回数,及び更新ページのヒット率などを統計解析ユティリティで確認し,指定値を決めてください。更新ページのヒット率が高いグローバルバッファでは出力比率を低く,ヒット率の低いグローバルバッファでは出力比率を高く指定してください。
  • 必要以上に大きい値を指定すると,更新の頻度が多い場合,入出力が多発します。また,遅延書き込み時にデータベースに書き込むページ数が増え,スループットが低下します。反対に,必要以上に少ない値を指定すると,シンクポイントダンプ出力時にデータベースに書き出すページ数が多くなることがあります。このため,できるだけ,シンクポイントダンプ出力間隔の間に同じページがデータベースに書き出される回数が少なくなるようにしてください。
  • すべてのページがグローバルバッファ上にあり,複数トランザクションで同一ページの更新が多く発生する場合は0を指定してください。0を指定すると,シンクポイント間隔内でデータベースに書き出される総ページ数を減らせます。
 
-c
このオプションはスタンバイレス型系切り替え機能に関するオプションです。この機能を使用しない場合にはこのオプションを指定しないでください。
  • 1:1スタンバイレス型系切り替え機能の場合
    正規BESのRDエリア又はインデクスが使用するグローバルバッファを,切り替え先の代替BES側にも作成する場合にこのオプションを指定します。このオプションを省略した場合,代替BES側にはグローバルバッファは作成されないため,代替中は代替BESに定義している-oオプション指定のグローバルバッファを使用します。
    なお,-c及び-oオプションの両方を省略した場合は代替BESユニットを開始できません。
    このオプションの指定によって代替中のグローバルバッファの割り当て方式が決まります。代替中のグローバルバッファの割り当て方式については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。
  • 影響分散スタンバイレス型系切り替え機能の場合
    影響分散スタンバイレス型系切り替えの対象となるバックエンドサーバに配置されているRDエリア又はインデクスのグローバルバッファを定義する場合はこのオプションを指定します。ここで定義したグローバルバッファは同じHAグループ内の全ユニットに作成されます。
    なお,-cオプションを省略した場合,このグローバルバッファが割り当てられないため,このグローバルバッファを使用するRDエリアにアクセスできません。
    このオプションの指定によって影響分散スタンバイレス型系切り替え機能の対象となるバックエンドサーバのRDエリア,又はインデクスに対するグローバルバッファの割り当て方式が決まります。影響分散スタンバイレス型系切り替え機能使用時のグローバルバッファの割り当て方式については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。
 
-y デファードライトトリガ契機の更新バッファ面数
〜<符号なし整数>((2〜2147483647))
デファードライトトリガのトリガ契機を更新バッファ面数で指定します。更新バッファ面数が指定値に達すると,更新ページをディスクに書き込みます。グローバルバッファごとにデファードライトトリガのトリガ契機を設定したい場合に,このオプションを指定してください。
《指定値の目安》
通常はこのオプションを省略してください。デファードライトの書き込み処理がシンクポイントダンプ取得間隔時間内で終了しない場合など,更新バッファ数を減らし,更新バッファヒット率を多少抑えてでも書き込み時間を短縮したいときにこのオプションを指定します。指定する場合は,50%(HiRDBが設定する初期値)を目安にし,マニュアル「HiRDB Version 8 システム運用ガイド」の「デファードライト処理適用時のシンクポイント処理時間のチューニング」を参照してオペランドの値を決定してください。
《オペランドの規則》
このオプションにグローバルバッファ面数より大きい値を指定した場合は,グローバルバッファ面数と同じ値が適用されます。
《注意事項》
このオプションの指定値が小さ過ぎると,デファードライト処理の回数が増え,デファードライト処理による負荷を高めるため,指定値の目安に従った設定をお勧めします。
《ほかのオペランドとの関連》
このオペランドは,pd_dbbuff_rate_updpageオペランドと次に示す関係があります。
  • pd_dbbuff_rate_updpageオペランドの指定値は全グローバルバッファに適用されます。
  • pdbufferオペランドの-yオプションの指定値はグローバルバッファごとに適用されます。
  • pdbufferオペランドの-yオプションの指定値が優先されます。
  • pdbufferオペランドの-yオプションを指定しない場合,デファードライトトリガ契機の更新バッファ面数は,pd_dbbuff_rate_updpageオペランドの指定によって次のように異なります。
    pd_dbbuff_rate_updpageオペランドの指定 デファードライトトリガ契機の更新バッファ面数
    あり グローバルバッファ面数×pd_dbbuff_rate_updpageオペランドの指定値
    なし HiRDBが自動計算します。