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

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

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

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

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

 

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

 

7) pd_thdlock_retry_time = スレッド間ロックスリープ時間
〜<符号なし整数>((1〜1000000))(単位:マイクロ秒)
スレッド間ロックのスリープ時間をマイクロ秒単位で指定します。次に示す条件をすべて満たす場合にこのオペランドを指定すると,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になります。

 

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

 

9) 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エリアの入出力エラーが発生したときの対処方法」を参照して,このオペランドの指定値を決めてください。
《オペランドの省略値》
このオペランドを省略すると,システム共通定義の同じオペランドの指定値が有効となります。システム共通定義の同じオペランドも省略すると,dbholdが仮定されます。
《注意事項》
  • unitdownを指定したときに入出力エラーが発生するとHiRDBが異常終了するため,次の場合に,処理対象のRDエリアが障害閉塞することがあります。
    ・更新前ログ取得モード又はログレスモードでUAPやユティリティを実行している場合
    ・CREATE TABLEのRECOVERYオペランドでNOを指定してログレスモードにしたユーザLOB用RDエリアに対して,UAP又はユティリティを実行している場合
  • unitdownを指定する場合は,データベースの更新ログを取得する運用にしてください。データベースの更新ログを取得しない運用にする場合は,UAP又はユティリティの実行前にバックアップを取得して,RDエリアの障害閉塞を回復できるようにしてください。バックアップの取得については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。
  • 開始処理中又は終了処理中の入出力エラーについては,unitdownを指定してもHiRDBを異常終了しません。
  • データベース回復ユティリティ(pdrstr)での回復処理中は,unitdownを指定していてもHiRDBを異常終了しません。この場合は,データベース回復ユティリティ(pdrstr)を再度実行して回復してください。