10.2 オペランドの説明
- ◆ pd_uap_wait = Y|N
-
ローカルバッファを使用してアクセスするRDエリア又はインデクスがほかのユーザに使用されている場合のUAPの動作を指定します。
Y:使用中のユーザの終了を待ちます。UAPはWAIT状態になります。
N:ほかのユーザが使用中の場合はUAPをエラーリターンします。
二つ以上のpdlbufferオペランドと一緒にこのオペランドを指定した場合,そのすべてのローカルバッファに対してこのオペランドの指定が有効になります。
- 《前提条件》
-
pdlbufferオペランドを指定する必要があります。
- ◆ pdlbuffer -a ローカルバッファ名
-
{-r RDエリア名〔,RDエリア名〕…|-i 認可識別子.インデクス識別子}
-n バッファ面数
〔-p 一括入力最大ページ数〕
UAPが使用するローカルバッファを定義します。ローカルバッファとはディスク上の表又はインデクスなどのデータを入出力するときに使用する領域のことで,シングルサーバ又はバックエンドサーバのプロセス固有メモリ上に確保されます。なお,ローカルバッファは100個まで定義できます。HiRDB/パラレルサーバの場合は1バックエンドサーバ当たり100個まで定義できます。
また,ローカルバッファを指定するときは,pdlbufferオペランドのオプションの指定によって次のように排他が掛かります。
pdlbufferオペランドの指定
排他資源
排他モード
pdlbufferオペランドの-rオプションを指定した場合
指定されたRDエリア
EX
pdlbufferオペランドの-iオプションを指定した場合
インデクス格納RDエリア
SU
インデクス格納表
EX
指定されたインデクス
EX
- 《前提条件》
-
ローカルバッファに指定するRDエリア及びインデクスに対して,pdbufferオペランドでグローバルバッファを割り当てておく必要があります。
- 《適用基準》
-
次に示す条件をすべて満たす場合にローカルバッファを定義します。
-
大量のデータを検索又は更新する
-
アクセス対象のRDエリアがほかのUAPからアクセスされない
また,HiRDBに常時接続するUAPはシステムへの影響(メモリの圧迫,プロセスの占有など)が大きいため,ローカルバッファを定義しないでください。
-
- 《注意事項》
-
HiRDB/パラレルサーバの場合の注意事項を次に示します。
-
ローカルバッファの使用時にサーバプロセスが異常終了すると,アボートコードPhb3008を出力してユニットが異常終了することがあります。
-
サーバプロセスの異常終了時に更新ページがあると,ロールバックプロセスで回復処理ができないことがあります。その場合,ユニットの再開始時に回復処理を実行します。
-
ローカルバッファを使用している場合に障害が発生したときのHiRDBの処理と対処方法については,マニュアル「HiRDB システム運用ガイド」を参照してください。
-
- -a ローカルバッファ名
-
〜<識別子>((1〜16文字))
ローカルバッファの名称を指定します。ほかのローカルバッファと同じ名称を指定できません。ただし,UAP環境定義ファイルが異なる場合は同じ名称を指定できます。
- -r RDエリア名〔,RDエリア名〕…
-
〜<識別子>((1〜30文字))
データ用のローカルバッファを割り当てるRDエリアの名称を指定します。ユーザ用RDエリアの名称だけ指定できます。
同じ名称は指定できません。ただし,UAP環境定義ファイルが異なる場合は同じ名称を指定できます。
- 《指定値の目安》
-
一つのローカルバッファに複数のRDエリアを割り当てる場合は,RDエリアの最大ページ長がバッファ長になります。したがって,ページ長が同じか,又はページ長が近いRDエリアを同じローカルバッファに割り当てると,入出力回数を削減できます。ただし,同じページ長のRDエリアでも,次に示すようなRDエリアは別々のローカルバッファに割り当てた方が入出力回数を削減できます。
-
用途の異なる表を格納するRDエリア
-
ランダムアクセスが多いRDエリアと順次アクセスが多いRDエリア
-
- 《オペランドの規則》
-
-
RDエリア名に半角英数字以外の文字を含む場合は引用符(")で囲んでください。
-
一つのローカルバッファには最大4096個のRDエリアを定義できます。
-
- -i 認可識別子.インデクス識別子
-
認可識別子:〜<識別子>((1〜30文字))
インデクス識別子:〜<識別子>((1〜30文字))
インデクス用のローカルバッファを割り当てるインデクスの名称(認可識別子.インデクス識別子)を指定します。
同じ名称は指定できません。ただし,UAP環境定義ファイルが異なる場合は同じ名称を指定できます。
- 《オペランドの規則》
-
認可識別子又はインデクス識別子に半角英数字以外の文字を含む場合は,認可識別子及びインデクス識別子をそれぞれ引用符(")で囲んでください。
- 《指定値の目安》
-
使用頻度の高いインデクスを指定してください。使用頻度の高いインデクスにローカルバッファを割り当てると,インデクスページのメモリ常駐度が上がり,入出力回数の削減効果が出ます。
特に,クラスタキー又はユニークキーに定義したインデクスをローカルバッファに割り当てると効果が大きくなります。なお,クラスタキーのインデクス識別子はHiRDBが決めるため,表を定義した後にディクショナリ表(SQL_INDEXES表のINDEX_NAME列)を検索してインデクス識別子を確認してください。
- 《注意事項》
-
一時インデクス名を指定したインデクス用ローカルバッファは無効となります。
- -n バッファ面数
-
〜<符号なし整数>((4〜125000))
ローカルバッファの面数を指定します。
- 《指定値の目安》
-
-
ローカルバッファはプロセス固有メモリ上に確保されます。必要以上に大きくするとほかのメモリの使用時にページングが多発し,性能が低下します。
-
バッファ面数が大き過ぎるとプロセス固有メモリを確保できないことがあるので注意してください。
-
シーケンシャルアクセスをするUAPの場合は,バッファリングの効果が望めないため,バッファ面数に最小値4を指定してください。
-
- -p 一括入力最大ページ数
-
〜<符号なし整数>((2〜256))
- 《指定値の目安》
-
メモリ量と入出力時間の削減効果のコストパフォーマンスから,次に示す計算式を満足する値を指定してください。
a×b=64〜128 (単位:キロバイト)
a:プリフェッチ対象表のデータ,又はインデクスが格納されているRDエリアのページ長
b:一括入力最大ページ数
なお,RDエリアのセグメントサイズが1の場合は,このオプションを指定しても効果が得られないため指定しないでください。