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

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

2.2.5 HiRDBの処理方式に関するオペランド

15) pd_dbsync_point = sync | commit
データベースの更新内容をファイルに反映するタイミングを指定します。
sync:
シンクポイント時点でデータベースの更新内容をファイルに反映します。シンクポイント間で同一ページを更新するようなトランザクションが多く起動される場合に性能が向上します。COMMIT文が発行されてもファイルに更新情報を反映しないため,入出力の負荷が軽減されます。ただし,commitを指定したときに比べて全面回復処理が遅くなります。
commit:
COMMIT文発行時点でデータベースの更新内容をファイルに反映します。トランザクションの完了時点でデータベースの内容が保証されるため,シンクポイント時点からデータベースを回復する必要がなく,全面回復処理に要する時間が短縮できます。ただし,シンクポイント間で同一ページを更新するようなトランザクションが多く起動される場合は,syncを指定したときに比べて性能が低下します。
《備考》
LOB用RDエリアはこのオペランドの影響を受けません。ディレクトリ部はCOMMIT文発行時点で反映されます。データ部はLOB用グローバルバッファを割り当てているかどうかによって処理が異なります。LOB用グローバルバッファを割り当てていない場合は更新要求時にすぐに反映されます。LOB用グローバルバッファを割り当てている場合はCOMMIT文発行時点で反映されます。ただし,グローバルバッファが満杯になったときはその時点で反映されます。
《ほかのオペランドとの関連》
このオペランドはpd_system_dbsync_pointオペランドと関連があります。

 

16) pd_system_dbsync_point = sync | commit
次に示すRDエリアの更新内容をファイルに反映するタイミングを指定します。
  • マスタディレクトリ用RDエリア
  • データディレクトリ用RDエリア
  • データディクショナリ用RDエリア
  • データディクショナリLOB用RDエリア
  • レジストリ用RDエリア
  • レジストリLOB用RDエリア
sync:
シンクポイント時点で前記のRDエリアの更新内容をファイルに反映します。COMMIT文が発行されてもファイルに更新情報を反映しないため,定義系SQLの処理性能がcommitを指定したときに比べて若干向上します。ただし,全面回復処理がcommitを指定したときに比べて遅くなります。
commit:
COMMIT文発行時点で前記のRDエリアの更新内容をファイルに反映します。トランザクションの完了時点で前記のRDエリアの更新内容が保証されるため,前記のRDエリアをシンクポイント時点から回復する必要がなく,全面回復処理に要する時間が短縮できます。ただし,syncを指定したときに比べて,定義系SQLの処理性能が若干低下します。
《ほかのオペランドとの関連》
このオペランドはpd_dbsync_pointオペランドと関連があります。pd_dbsync_pointオペランドとの関連を次に示します。
pd_dbsync_pointオペランドの値 pd_system_dbsync_pointオペランドの値
sync commit(省略値)
sync(省略値) 全RDエリアの更新内容をシンクポイント時点で反映します。 前記のRDエリアの更新内容はCOMMIT文発行時点で反映します。そのほかのRDエリアの更新内容はシンクポイント時点で反映します。
commit 全RDエリアの更新内容をCOMMIT文発行時点で反映します。

 

17) pd_dbsync_altwrite_skip = Y | N
シンクポイント取得処理中に更新バッファに対して参照要求が発生した場合,その更新バッファの内容をデータベースに書き込む処理は,参照要求をしたトランザクションを実行するサーバプロセスが代行します。この代行処理をスキップするかどうかをこのオペランドで指定します。
このオペランドの指定値の比較を次に示します。
比較項目 pd_dbsync_altwrite_skipオペランドの値
Y N(省略値)
シンクポイント取得処理中に,更新バッファに対して参照要求が発生した場合のデータベース書き込み処理方式 更新バッファの内容をデータベースに書き込む処理は,参照要求をしたトランザクションを実行するサーバプロセスが代行しません(代行処理をスキップします)。 更新バッファの内容をデータベースに書き込む処理は,参照要求をしたトランザクションを実行するサーバプロセスが代行します(代行処理をスキップしません)。
メリット トランザクションを実行するサーバプロセスで代行処理を行わないため,シンクポイント取得処理中の参照トランザクションの性能が安定します。 参照トランザクションに対して負荷が分散される分,シンクポイント取得処理時間が短くなります。
デメリット 参照トランザクションに対して負荷が分散されない分,シンクポイント取得処理時間が長くなります。 シンクポイント取得処理中の参照トランザクションの性能が低下することがあります。
《指定値の目安》
統計解析ユティリティのグローバルバッファプールに関する統計情報を実行し,シンクポイント時の参照要求ヒットによるデータベース書き込み処理代行回数(ALTRW)を確認してください。この値が大きいと,シンクポイント取得処理中の参照トランザクションの性能が安定しません。安定させたい場合はYを指定してください。ただし,Yを指定すると,シンクポイント取得処理時間が長くなるため,必要に応じてデファードライト処理の並列WRITE機能を使用し,書き込み処理に掛かる負荷を分散させてください。

 

18) pd_overflow_suppress = Y | N
演算中のエラー抑止について指定します。エラー抑止の対象を次に示します。
  • 演算途中でのオーバフロー
  • 0除算エラー
Y:
SQL実行時の演算中に対象となるエラーが発生した場合,演算結果をナル値にして処理を続行します。
N:
SQL実行時の演算中に対象となるエラーが発生した場合,エラーで処理を取り消します。

 

19) pd_process_terminator = resident | fixed | nonresident
HiRDBのプロセスが異常終了した場合,HiRDBは後処理を実行するプロセス(これを後処理プロセスといいます)を起動して後処理をします。このオペランドでは,後処理プロセスをHiRDBの開始時に起動しておくかどうかを指定します。
resident:
HiRDBの開始時に後処理プロセスを一つ起動します。HiRDB/パラレルサーバの場合は,一つのユニットに一つの後処理プロセスを起動します。
複数のプロセスが同時に異常終了した場合,HiRDBが規定した数まで後処理プロセスを起動して後処理を並列実行します。メモリ不足などで後処理プロセスを新たに起動できない場合は,既に起動している後処理プロセスで後処理を順次実行します。
なお,メモリ不足などによって,HiRDBが規定した数まで後処理プロセスを起動できない場合,HiRDB(HiRDB/パラレルサーバの場合は該当するユニット)が異常終了することがあります。
fixed:
HiRDBの開始時に,pd_process_terminator_maxオペランドで指定した数の後処理プロセスを起動します。HiRDB/パラレルサーバの場合は,ユニットごとにpd_process_terminator_maxオペランドで指定した数の後処理プロセスを起動します。メモリ不足などで後処理プロセスを起動できない場合はHiRDB(HiRDB/パラレルサーバの場合は該当するユニット)を開始しません。
pd_process_terminator_maxオペランドの値を超えるプロセスが同時に異常終了した場合,後処理プロセスを追加起動しません。この場合,既に起動している後処理プロセスで後処理を順次実行します。
nonresident:
HiRDBの開始時に後処理プロセスを起動しません。プロセスが異常終了するたびに後処理プロセスを起動します。
複数のプロセスが同時に異常終了した場合,複数の後処理プロセスを同時に起動して後処理を並列実行します。メモリ不足などで後処理プロセスを起動できない場合,HiRDB(HiRDB/パラレルサーバの場合は該当するユニット)が異常終了することがあります。
《指定値の目安》
  • 信頼性を向上する場合はresident又はfixedを指定します。後処理についての性能面はresidentよりfixedの方が優れていますが,fixedの方がより多くのメモリを必要とします。
  • nonresidentを指定すると,オンデマンドに後処理プロセスが起動されます。このため,メモリ不足が発生すると,後処理プロセスが起動できなくなります。また,プロセスの異常終了が重なった場合,複数の後処理プロセスが起動されるため,性能面でも好ましくありません。
《注意事項》
指定値をfixedに変更する場合は注意が必要です。HiRDBの開始時に後処理プロセスを起動するため,より多くのメモリが必要になります。メモリ不足などで後処理プロセスを起動できない場合はHiRDB(HiRDB/パラレルサーバの場合は該当するユニット)を開始しません。

 

20) pd_process_terminator_max = 後処理プロセスの最大常駐数
〜<符号なし整数>((1〜100))《Max(3,↑pd_max_usersの値÷100↑)》
pd_process_terminatorオペランドを省略するか,又はfixedを指定した場合にこのオペランドを指定します。このオペランドには,HiRDBの開始時に起動する後処理プロセスの数を指定します。メモリ不足などで,ここで指定した数の後処理プロセスを起動できない場合は,HiRDB(HiRDB/パラレルサーバの場合は該当するユニット)を開始しません。
《指定値の目安》
必要になる後処理プロセス数は,pd_max_usersの値に比例します。このオペランドの値を決める場合はこのことを考慮してください。
《ほかのオペランドとの関連》
pd_sysdef_default_optionオペランドにv6compatible又はv7compatibleを指定している場合,このオペランドの省略値は次の値になります。
↑pd_max_usersの値÷100↑

 

21) pd_process_desktopheap_size = 1プロセス当たりのデスクトップヒープ消費量
〜<符号なし整数>((50〜10000))(単位:バイト)
  • Windows 2000,Windows Server 2008,Windows XP,又はWindows Vistaの場合:《5000》
  • Windows Server 2003の場合:《100》
HiRDBの1プロセス当たりのデスクトップヒープ消費量を指定します。
《指定値の目安》
  • 通常は,このオペランドを指定する必要はありません。
  • HiRDBのデスクトップヒープ消費量は,次の計算式から求めてください。
    HiRDBのデスクトップヒープ消費量=HiRDBが作成するデスクトップ数×デスクトップ1面のデスクトップヒープ消費量1(単位:バイト)
    HiRDBが作成するデスクトップ数=↑(pd_max_server_processオペランドの指定値+50)÷デスクトップ1面のデスクトップヒープ消費量※1×pd_process_desktopheap_sizeオペランドの指定値↑
    デスクトップヒープの上限は,サーバマシン全体で48メガバイト※2です。ほかに起動しているプロセスを含めたデスクトップヒープの合計が48メガバイト※2を超える場合は,次に示す操作を実施してください。
    ・HiRDBのデスクトップヒープ消費量を計算し,pd_max_server_processオペランドの指定値を小さくしてからHiRDBを再起動する
    ・ほかに起動しているプロセスを停止する
    注※1 OSのレジストリに指定されている非対話型デスクトップヒープの使用量です。
    注※2 Windows 2000でのデスクトップヒープの使用量です。ほかのOSの場合については,各OSのマニュアルを参照してください。

 

22) pd_space_level = 0 | 1 | 3
空白変換機能を使用する場合の空白変換レベルを指定します。空白変換機能については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。
0:空白変換レベル0を指定します。
1:空白変換レベル1を指定します。
3:空白変換レベル3を指定します。
空白変換レベルの処理方式を次に示します。
レベル 説明
レベル0 空白変換をしません。
レベル1 操作系SQLでの定数,埋込み変数,又は?パラメタのデータの空白を次のように変換します。
  • 文字列定数を各国文字列定数とみなした場合,半角空白2文字を全角空白1文字に変換します。なお,半角空白が1文字単独で現れる場合は変換しません。
  • 文字列定数を混在文字列定数とみなした場合,全角空白1文字を半角空白2文字に変換します。
  • 各国文字列型の列へのデータの格納時,及び各国文字列型の値式との比較時は,埋込み変数,又は?パラメタの半角空白2文字を全角空白1文字に変換します。なお,半角空白が1文字単独で現れる場合は変換しません。
  • 混在文字列型の列へのデータの格納時,及び混在文字列型の値式との比較時は,埋込み変数,又は?パラメタの全角空白1文字を半角空白2文字に変換します。
レベル3 空白変換レベル1の処理に加えて次の処理が加わります。
  • 各国文字列型の値式のデータを検索するときに,全角空白1文字を半角空白2文字に変換します。
《注意事項》
  • 空白変換レベルを変更した場合,変更の前後でUAPの結果が異なる場合があります。UAPの結果を同じにしたい場合には,空白変換レベルを変更しないでください。
  • 空白変換レベル3を指定してソートをした場合,HiRDBはソートの結果に対して空白変換をするため,期待した結果を得られないことがあります。
  • クラスタキーの列へデータを格納する場合,空白変換によってユニークエラーとなることがあります。この場合,空白変換をしないでデータを格納するか,又はデータベース再編成ユティリティで既存のデータベースの空白を統一してください。
  • 各国文字列の空白変換は,先頭から2文字単位で変換します。
  • 空白変換レベルに1又は3を指定したときの注意事項を次に示します。
    ハッシュ分割した表に対して,表分割ハッシュ関数を使用したUAPで格納先RDエリアを求める場合は,表分割ハッシュ関数の引数に空白変換レベルを指定してください。指定しないと表分割ハッシュ関数の結果が不正になることがあります。
    キーレンジ分割(分割キーが各国文字データ又は混在文字データの場合)した表に対して,UAPでキーレンジ分割処理をしている場合は,分割キー値を空白変換関数で変換してください。変換しないとキーレンジ分割の結果が不正になることがあります。
    表分割ハッシュ関数,及び空白変換関数については,マニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。
《クライアント環境定義との関連》
このオペランドの値はクライアントごとに変更できます。クライアントごとに変更する場合は,クライアント環境定義のPDSPACELVLオペランドを指定してください。PDSPACELVLオペランドについては,マニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。

 

23) pd_dec_sign_normalize = Y | N
UAPから渡された符号付きパック形式データの符号部を正規化するかどうかを指定します(DECIMAL型の符号正規化機能を使用するかどうかを指定します)。符号部を正規化するとは,符号付きパック形式データの符号部A〜FをC又はDに変換することを意味しています。
DECIMAL型の符号正規化機能については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。
Y:
DECIMAL型の符号正規化機能を使用します。符号付きパック形式データの符号部を正規化します。A〜FをDECIMALデータの符号部とみなします。
N:
DECIMAL型の符号正規化機能を使用しません。符号付きパック形式データの符号部を正規化しません。C,D,FをDECIMALデータの符号部とみなします。
《注意事項》
Yを指定した場合(DECIMAL型の符号正規化機能を使用する場合)の注意事項を次に示します。
  • ハッシュ分割した表に対して,表分割ハッシュ関数を使用したUAPで格納先RDエリアを求める場合は,表分割ハッシュ関数の引数に「DECIMAL型の符号正規化機能あり」を指定してください。指定しないと表分割ハッシュ関数の結果が不正になることがあります。
  • キーレンジ分割(分割キーがDECIMAL型のデータの場合)した表に対して,UAPでキーレンジ分割処理をしている場合は,分割キー値をDECIMAL型符号正規化関数で変換してください。変換しないとキーレンジ分割の結果が不正になることがあります。
表分割ハッシュ関数,及びDECIMAL型符号正規化関数については,マニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。

 

24) pd_sql_dec_op_maxprec = 演算結果が29けた以下のDECIMAL型となる精度の最大値
〜<符号なし整数>(( 29|38 ))
次に示す最大値を指定します。
  • 演算結果のデータ型がDECIMAL型となる精度の最大値
    ・29けた以下のデータだけに対する四則演算
    ・29けた以下のデータだけに対する集合関数AVG/SUM
    ・29けた以下のデータだけに対するスカラ関数DECIMAL/VALUE/GREATEST/LEAST
    ・引数がFLOAT型でかつ,精度を省略したスカラ関数DECIMAL
    ・対応するTHEN句及びELSE句の値が29けた以下のデータだけのCASE式
    ・抽象データ型のパラメタを含み,戻り値のデータ型が29けた以下であるユーザ定義関数だけが”候補となる関数”となる関数の呼び出し
  • 集合演算の結果列のデータ型がDECIMAL型となる場合,集合演算の導出表に対応する列が29けた以下のデータだけのときの精度の最大値
《指定値の目安》
  • 08-04以降のバージョンを新たに導入する場合
    38を指定することをお勧めします。
  • 上記以外の場合
    このオペランドを省略するか,又は29を指定することをお勧めします。
《注意事項》
  • このオペランドの値を変更する場合,変更直後に次の処理を行ってください。
    <08-04以降のバージョンで定義したビュー表の場合>
    次に示すDECIMAL型の演算を指定して定義したビュー表は,すべて再定義してください。
    ・29けた以下のデータだけに対する四則演算
    ・29けた以下のデータだけに対する集合関数AVG/SUM
    ・29けた以下のデータだけに対するスカラ関数MOD
    ・引数がFLOAT型でかつ精度を省略したスカラ関数DECIMAL
    <08-04より前のバージョンで定義したビュー表の場合>
    定義されているビュー表をすべて再定義してください。
  • このオペランドの指定値を変更する場合,次のことに注意してください。
    ・このオペランドの指定値を29から38に変更した場合
    メモリ所要量が増加したり,演算のオーバヘッドが増加したりするデメリットがあります。DECIMAL型の演算を29けた以下の範囲で使用している場合は,このオペランドの値を29から38に変更しないことをお勧めします。
    ・このオペランドの指定値を38から29に変更した場合
    38のときに動作していた29けた以下のDECIMAL型の演算がオーバフローすることがあります。

 

25) pd_server_entry_queue = spnfifo | fifo | loop
UAPの多重実行時にHiRDBサーバプロセスで処理が競合すると,処理要求を一時的にキューイングすることがあります。このときのHiRDBの処理方式を指定します。なお,ここでいう処理の競合とは,HiRDBサーバプロセス上でトランザクションが稼働するときに,複数のプロセスが表やRDエリアなどの内部資源に対して行う排他制御の競合を意味しています。内部資源に対して排他制御を行えるプロセスは常に一つだけです。また,以下の説明でいうスピンとは,排他制御の実行権を得るための処理を意味しています。ほかのプロセスが排他制御の実行権を解放した場合,スピン中のプロセスが排他制御の実行権を得る可能性が高くなります。
spnfifo:
先に発生した処理要求を優先的に処理します。ただし,キューに登録される前に一定回数のスピンをするため,完全に順序が守られるわけではありません。これは,バージョン06-00以前の処理方式です。
fifo:
先に発生した処理要求をspnfifo指定時より優先的に処理します。キューに登録される前に一定回数のスピンをしないため,spnfifo指定より処理順序は守られます。また,CPUの負荷を軽減する効果があります。
loop:
すべての処理要求を均等な優先度で処理します。キューに登録されている間は高速なスピンをします。loopを指定すると,UAPの多重実行時のレスポンスが向上することがあります。しかし,そのほかの指定よりCPUに負荷が掛かります。
《指定値の目安》
通常,このオペランドを指定する必要はありません。
UAPの多重実行時の処理性能が向上しない場合に指定値を変更してください。性能が向上することがあります。

 

26) pd_thdlock_sleep_func = 0 | 1
共用メモリなどの共用資源を使用するときのロック獲得処理などで使用するプロセスの待機方法を指定します。このオペランドとpd_thdlock_retry_timeオペランドの指定値の対応関係を次に示します。
pd_thdlock_sleep_func
オペランドの値
pd_thdlock_retry_timeオペランドの値
1〜10000 10001〜1000000
0 select()又はSleep()を使用して指定したスレッド間ロックのスリープ時間だけ,各プロセスが待機します。
1 sched_yield()又はSwitchToThread()を使用して,OSによってプロセスの割り当てを決定します(pd_thdlock_retry_timeオペランドの値は無効となります)。 select()又はSleep()を使用して指定したスレッド間ロックのスリープ時間だけ,各プロセスが待機します。
注※ プロセスが待機しないため,CPU使用率が高騰します。
《指定値の目安》
このオペランドを指定する必要はありません。このオペランドに0を指定するか,又はこのオペランドを省略してください。
《注意事項》
  • このオペランドの指定値を0から1に変更すると,CPU使用率が高騰します。
  • スレッドロック確保処理は,一度のリトライで確保できるとは限りません。確保できるまでリトライを繰り返します。
    このオペランドに1を指定してリトライした場合,スリープ処理がないため,いったんCPU使用率が100%になると,多重に実行されるロック確保処理が大きなオーバヘッドとなります。そのため,CPU使用率が100%になる前と同等のトランザクション件数が投入されている場合でも,CPU使用率が100%の状態が長期間継続する場合があります。
《ほかのオペランドとの関連》
pd_thdlock_retry_timeオペランドの指定値が10000より大きい場合,このオペランドは無効となります。

 

27) pd_thdlock_wakeup_lock = Y | N
スレッド間ロックの解放通知方式を指定します。このオペランドにYを指定することで,解放通知が確実に送信されることを保証します。
Y:
スレッド間ロックの解放通知をするときに,これとは別の一時的なロックを新たに取得します。
N:
スレッド間ロックの解放通知をするときに,これとは別の一時的なロックを新たに取得しません。
これは,バージョン06-02以前のHiRDBの処理方式です。
《指定値の目安》
このオペランドにはYを指定してください。
《注意事項》
Nを指定した場合,ほかのトランザクションに比べて,実行時間が長いトランザクションが発生し,UAPの多重実行時のレスポンスが低下することがあります。

 

28) pd_thdlock_pipe_retry_interval = スレッド間ロックの解放調査間隔
〜<符号なし整数>((0〜2147483647))《1000000》(単位:マイクロ秒)
スレッド間ロックの解放調査を行う間隔をマイクロ秒単位で指定します。
《指定値の目安》
次の条件をすべて満たす場合にデフォルト値以上の値にすると,CPU使用率が下がることがあります。
  • pd_thdlock_wakeup_lock = Yを指定している
  • UAPの多重実行時の処理性能が向上しない
  • CPU使用率が高い
ただし,ほかのトランザクションに比べて,実行時間が長いトランザクションが発生するようになります。
上記に該当しない場合は,このオペランドを指定しないでください。
《注意事項》
このオペランドにデフォルト値未満の値を指定すると,解放調査処理を短時間で繰り返すため,CPU使用率が高騰します。

 

29) pd_thdlock_retry_time = スレッド間ロックスリープ時間
〜<符号なし整数>((1〜1000000))《1000》(単位:マイクロ秒)
スレッド間ロックのスリープ時間をマイクロ秒単位で指定します。次に示す条件をすべて満たす場合にこのオペランドを指定すると,CPU使用率が下がることがあります。
  • CPU使用率が非常に高い
  • 性能が低下してでもCPU使用率を下げたい
  • pd_thdlock_sleep_funcオペランドに0を指定している
上記に該当しない場合,このオペランドは指定しないでください。pd_thdlock_sleep_funcとpd_thdlock_retry_timeオペランドの指定値の組み合わせによるHiRDBの処理を次に示します。
pd_thdlock_sleep_funcオペランドの値 pd_thdlock_retry_timeオペランドの値
1〜10000 10001〜1000000
0 select()又はSleep()を使用して指定したスレッド間ロックのスリープ時間だけ,各プロセスが待機します。
1 sched_yield()又はSwitchToThread()を使用して,OSによってプロセスの割り当てを決定します(pd_thdlock_retry_timeオペランドの値は無効となります)。 select()又はSleep()を使用して指定したスレッド間ロックのスリープ時間だけ,各プロセスが待機します。
注※ プロセスが待機しないため,CPU使用率が高騰します。
《指定値の目安》
  • このオペランドを指定する場合,最初は10000を指定してください。
  • 10000を指定してCPU使用率が高くなり過ぎる場合は,指定値を大きくしてください。
《注意事項》
  • 指定値を小さくしても,性能が変わらない場合があります。
  • 1000以上の値を指定すると,性能が低下することがあります。
《ほかのオペランドとの関連》
pd_sysdef_default_optionオペランドにv6compatible又はv7compatibleを指定している場合は,このオペランドの省略値は10000になります。

 

30) pd_thdspnlk_spn_count = スレッド間スピンロックのスピン回数
〜<符号なし整数>((0〜2147483647))《512》
スレッド間スピンロックのスピン回数を指定します。次に示す条件をすべて満たす場合にこのオペランドを指定すると,性能が向上することがあります。それ以外の場合は指定する必要はありません。
  • CPU使用率に余裕がある
  • CPU使用率を上げてでも性能を良くしたい
《指定値の目安》
  • このオペランドを指定する場合は省略値(512)より大きい値を指定してください。
  • 指定値はOSの種類,プロセッサの種類,マシンの性能,ディスクの性能,UAPの内容,UAPの多重実行数などに依存するため,明確な目安はありません。指定値の変更と性能測定を行って適切な値を求めてください。
《注意事項》
  • このオペランドの値が大き過ぎると,CPU使用率が高くなってOSがスローダウンするなどの弊害が発生することがあります。その場合はこのオペランドの値を小さくしてください。
  • このオペランドの値を大きくしても,性能が向上しないこともあります。

 

31) pd_pageaccess_mode = SNAPSHOT | NORMAL
データベース検索時のページアクセス方式を指定します。
SNAPSHOT:
ページアクセス方式をスナップショット方式にします。グローバルバッファへの初回アクセス時,探索条件に一致する行をプロセス固有メモリにコピーします。2回目の検索要求時にはプロセス固有メモリを参照して検索結果を返します。スナップショット方式については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。
NORMAL:
ページアクセス方式を通常方式にします。検索要求ごとにグローバルバッファをアクセスします。
《指定値の目安》
グループ分け高速化機能など,性能向上を目的とした機能を使用できない場合に,スナップショット方式の適用を検討してください。通常の検索SQLでは,指定された探索条件に一致する行の数とほぼ同じ回数分だけグローバルバッファへのアクセスを行っています。このため,検索SQLの実行が重なるとグローバルバッファへのアクセスが集中して,期待した性能が得られないことがあります。このような場合にスナップショット方式を適用すると,検索SQLのグローバルバッファへのアクセス回数を削減できるため,検索性能が向上することがあります。ただし,スナップショット方式を適用した場合,HiRDBが使用するプロセス固有メモリが増加します。スナップショット方式を適用した場合のプロセス固有メモリの計算式については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。

 

32) pd_cmdhold_precheck = Y | N
RDエリアの閉塞状態のチェックをRDエリアの排他処理の前に行うかどうかを指定します。
Y:
RDエリアの閉塞状態のチェックをRDエリアの排他処理の前に行います。
N:
RDエリアの閉塞状態のチェックをRDエリアの排他処理の前に行いません。排他取得後に行います。
チェック対象になる閉塞の種類を次に示します。
  • コマンド閉塞
  • 参照可能閉塞
  • 参照可能バックアップ閉塞
《指定値の目安》
通常はこのオペランドを省略するか,又はYを指定してください。Yを指定したときと,Nを指定したときの違いを次に示します。
項目 Yを指定した場合 Nの場合
HiRDBの処理 UAP又はコマンドの実行時,RDエリアの排他を取得する前に,アクセスする可能性があるすべてのRDエリアの閉塞状態をチェックします。例えば,RDエリア1〜4に横分割されている表にアクセスする場合,RDエリア1〜4の閉塞状態をチェックします。ただし,キーレンジ分割,又はFIXハッシュ分割で条件を指定して,UAP側でアクセスする可能性があるRDエリアを絞り込んでいる場合,アクセスする可能性がないRDエリアが閉塞していてもエラーにはなりません。 UAP又はコマンドの実行時,RDエリアの排他を取得した後に,アクセスする可能性があるすべてのRDエリアの閉塞状態をチェックします。例えば,RDエリア1〜4に横分割されている表にアクセスするとします。インデクスを使用してアクセスするRDエリアを絞り込んだ結果,アクセス対象RDエリアがRDエリア1の場合,RDエリア1に対してだけ閉塞状態をチェックします。これはHiRDB Version 5.0以前の処理方式です。
閉塞中のRDエリアにUAPがアクセスした場合 RDエリアの排他を取得する前に閉塞チェックをするため,RDエリアが閉塞していることを,Nを指定したときよりも早く検知できます。 RDエリアの排他を取得した後に閉塞チェックをするため,閉塞中のRDエリアにUAPがアクセスした場合,RDエリアの排他によるタイムアウトエラー(KFPA11770-E)が発生することがあります。
また,アクセス対象RDエリアがデータロード又は再編成で閉塞中の場合,データロード又は再編成処理の終了後にUAPが閉塞エラー(KFPA11920-E)になることがあります。
非横分割インデクスを使用してアクセスするRDエリアを絞り込む場合 表が横分割されていてインデクスが横分割されていない場合に注意が必要です。非横分割インデクスを使用してアクセス対象RDエリアを絞り込む場合,アクセス対象外のRDエリアが閉塞していても,閉塞エラー(KFPA11920-E)になります。HiRDBの処理で説明した例の場合,RDエリア1〜4のどれかが閉塞していると,UAPが閉塞エラー(KFPA11920-E)になります。 非横分割インデクスを使用してアクセス対象RDエリアを絞り込む場合,アクセス対象外のRDエリアが閉塞していても,UAP又はコマンドを実行できます。HiRDBの処理で説明した例の場合,RDエリア2〜4が閉塞していても,UAPを実行できます。
注※ RDエリアが閉塞状態では実行できないUAP及びコマンドが対象になります。

 

33) pd_db_io_error_action = dbhold | unitdown
RDエリア(マスタディレクトリ用RDエリアを除く)の入出力エラーが発生したときのHiRDBの処理を指定します。なお,マスタディレクトリ用RDエリアに入出力エラーが発生した場合,このオペランドの指定に関係なく常にHiRDB(HiRDB/パラレルサーバの場合はユニット)が異常終了します。RDエリアの入出力エラーが発生したときの対処方法については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。
ここでいう入出力エラーとは,HiRDBがファイルを操作したときにHiRDBが判別できない理由でファイル操作に失敗したエラーを意味し,HiRDBファイルシステムに対するアクセス要求から返されるエラーコードに-1544が出力されるエラーのことです。
dbhold:
RDエリアの入出力エラーが発生した場合,そのRDエリアを障害閉塞します。
unitdown:
RDエリアの入出力エラーが発生した場合,HiRDB(HiRDB/パラレルサーバの場合はユニット)を異常終了します。ただし,異常終了後に再度入出力エラーが発生した場合,そのRDエリアを障害閉塞します。再び,unitdownの指定を有効にするには,次に示すどちらかの方法を実行してください。
  • HiRDBを正常開始する
  • システム構成変更コマンド(pdchgconfコマンド)を実行する
《指定値の目安》
マニュアル「HiRDB Version 8 システム運用ガイド」の「RDエリアの入出力エラーが発生したときの対処方法」を参照して,このオペランドの指定値を決めてください。
《注意事項》
  • unitdownを指定したときに入出力エラーが発生するとHiRDBが異常終了するため,次の場合に,処理対象のRDエリアが障害閉塞することがあります。
    ・更新前ログ取得モード又はログレスモードでUAPやユティリティを実行している場合
    ・CREATE TABLEのRECOVERYオペランドでNOを指定してログレスモードにしたユーザLOB用RDエリアに対して,UAP又はユティリティを実行している場合
  • unitdownを指定する場合は,データベースの更新ログを取得する運用をしてください。データベースの更新ログを取得しない運用をする場合は,UAP又はユティリティの実行前にバックアップを取得して,RDエリアの障害閉塞を回復できるようにしてください。バックアップの取得については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。
  • 開始処理中又は終了処理中の入出力エラーについては,unitdownを指定してもHiRDBを異常終了しません。
  • データベース回復ユティリティ(pdrstr)での回復処理中は,unitdownを指定していてもHiRDBを異常終了しません。この場合は,データベース回復ユティリティ(pdrstr)を再度実行して回復してください。

 

34) pd_connect_errmsg_hide = Y | N
CONNECT失敗時に出力されるメッセージで,エラーの要因を隠すかどうかを指定します。
Y:CONNECT失敗時にエラーの要因を隠します。
N:CONNECT失敗時にエラーの要因を隠しません。
このオペランドの指定値によってCONNECT失敗時に出力されるメッセージが変わることがあります。詳細を次に示します。
エラー要因 出力されるメッセージ
Yを指定した場合 N(省略値)を指定した場合
認可識別子の不正(指定されたユーザは存在しない) KFPA19632-E KFPA11561-E
パスワードの不正(指定されたパスワードが一致しない) KFPA19632-E KFPA11560-E

 

35) pd_rpc_bind_loopback_address = Y | N
受信用ポートの生成時,ループバックアドレスでbind()するかどうかを指定します。
Y:ループバックアドレスでbind()します。
N:ループバックアドレスでbind()しません。
《前提条件》
このオペランドにYを指定する場合は,次に示す条件をすべて満たしている必要があります。
  • HiRDB/シングルサーバでHiRDBシステムが構成されている
  • 系切り替え機能を適用している場合,モニタモードでIPアドレスを引き継ぐ構成である
  • HiRDBクライアントとHiRDBサーバが同一マシンにある(HiRDBクライアントが別マシンにない)
  • pdunitオペランドの-xオプションとクライアント環境定義のPDHOSTオペランドにループバックアドレスを指定している
《利点》
前記の前提条件を満たすシステム環境で,このオペランドにYを指定すると,HiRDBサーバのプログラムをWindowsファイアウォールの例外リストに登録する必要がなくなります。
Windowsファイアウォールの例外リストの登録については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。

36) pd_cancel_down_msgchange = Y | N
サーバプロセスの強制終了が発生した場合に,出力されるエラーメッセージを変更するかどうかを指定します。
Y:
エラーメッセージを警告メッセージに変更します。エラーメッセージを変更する機能をトランザクションキャンセル時のプロセスダウンメッセージ変更機能といいます。
N:
エラーメッセージを変更しません。
このオペランドの指定値と出力されるエラーメッセージの関係を次に示します。
条件 出力されるメッセージ
Y(省略値)を指定した場合 Nを指定した場合
次に示す原因によってサーバプロセスの強制終了が発生した場合
  • ユーザ操作による意図的な強制終了
  • タイムアウトによる強制終了
  • クライアント側の障害による強制終了

  • KFPS01852-W
  • KFPO00115-W

  • KFPS01820-E
  • KFPO00105-E
上記以外の原因によってサーバプロセスの強制終了が発生した場合
  • KFPS01820-E
  • KFPO00105-E
サーバプロセスの強制終了の原因をHiRDBが判断できない場合
注※
メッセージの変更が発生する原因はほかにもあります。詳細については,マニュアル「HiRDB Version 8 システム運用ガイド」の「トランザクションキャンセル時のプロセスダウンメッセージ変更機能」を参照してください。
《利点》
このオペランドにYを指定すると,サーバプロセスの強制終了が発生した原因で出力されるメッセージを切り分けられます。
《備考》
KFPS01820-E及びKFPO00105-Eメッセージが出力された場合,その原因がHiRDBの不正検知によるものか,又はトランザクションキャンセルなどのユーザ操作による意図的なものかをメッセージIDから判断できません。判断するには,各メッセージに出力されるプロセスIDを比較する必要があります。
JP1を使用してメッセージを監視している場合,複数のメッセージ情報を比較できないため,KFPS01820-E及びKFPO00105-Eメッセージが出力されたときに対処が難しくなることがあります。このオペランドにYを指定すると,出力されるメッセージがエラー原因によって切り分けられるため,対処が特定しやすくなります。したがって,JP1を使用してメッセージを監視している場合,このオペランドにYを指定することをお勧めします。
《ほかのオペランドとの関連》
pd_sysdef_default_optionオペランドにv6compatible又はv7compatibleを指定している場合は,このオペランドの省略値はNになります。