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

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

3.2.9 排他制御に関するオペランド

19) pd_lck_wait_timeout = 排他待ち限界経過時間
〜<符号なし整数>((0〜65535))(単位:秒)
排他待ち時間を監視する最大時間を秒単位で指定します。排他待ち時間とは,排他要求が待ち状態になってから解除されるまでの時間のことです。
指定した時間内に待ち状態が解除されない場合,SQLはエラーリターンします。0を指定した場合,排他待ち時間を監視しないで,待ち状態が解除されるまで待ち続けます。
《オペランドの省略値》
このオペランドを省略すると,システム共通定義の同じオペランドの指定値が有効となります。システム共通定義の同じオペランドも省略すると,次のうち,大きい方の値が仮定されます。
  • 180
  • pd_watch_timeの値
ただし,pd_sysdef_default_optionオペランドにv6compatibleを指定している場合は180が仮定されます。
《注意事項》
このオペランドを省略すると,pd_watch_timeオペランドの値が省略値として仮定されることがあります。pd_watch_timeオペランドはHiRDB/シングルサーバに指定しても無効になりますが,pd_lck_wait_timeoutオペランドの省略値に使用されることがあります。このため,HiRDB/シングルサーバの場合はpd_watch_timeオペランドを省略することをお勧めします。
《クライアント環境定義との関連》
このオペランドの値はクライアントごとに変更できます。クライアントごとに変更する場合は,クライアント環境定義のPDLCKWAITTIMEを指定してください。PDLCKWAITTIMEについては,マニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。
《ほかのオペランドとの関連》
このオペランドは,次に示すオペランドと関連があります。
  • pd_lck_deadlock_check
  • pd_lck_deadlock_check_interval

 

20) pd_lck_release_detect = interval | pipe
このオペランドでは,HiRDBが排他の解除を検知する方法(資源を占有している処理が,資源の占有を解除したかどうかを知る方法)について指定します。
interval:一定間隔で排他管理用領域を参照して排他解除状態を調べます。
pipe:pipeファイル(プロセス間通信のパイプ)を使用して排他解除通知を受け取ります。
《指定値の目安》
このオペランドの指定値を変更するときの目安を次に示します。
指定値 HiRDBの処理方式 利点・適用基準
interval 共用メモリにある排他管理用領域を参照して,排他が解除されたかどうかを検知します。HiRDBは排他管理用領域を一定間隔(一定のインターバル)で参照しています。インターバル時間は,pd_lck_release_detect_intervalオペランドで指定します。 資源を占有している処理が排他を解除しても,次の排他管理用領域の参照時までそれを検知できません。このため,1トランザクションの処理時間が短いUAPでは,排他待ち時間が長くなることがあります。ただし,この待ちではCPUに負荷を掛けたり,ファイルをオープンしたりしません。
pd_lck_release_detect_intervalオペランドに小さい値を指定すると,CPU利用率が上がり過ぎてスループットが伸びないことがあります。低速なCPUを使用している場合に,CPU負荷を軽減する効果があります。
pipe pipeファイルを使用して排他が解除されたかどうかを検知します。資源を占有している処理から排他待ちをしている処理に排他解除が通知されます。排他占有プロセスが排他を解除した時点で,排他待ちプロセスは排他の解除を検知できます。
1プロセス当たり最大1個のファイルディスクリプタを使用するため,ファイルディスクリプタを再見積もりする必要があります。

  • 1トランザクションの処理時間がpd_lck_release_detect_intervalオペランドの値以下の場合は,スループットが向上します。
  • 排他待ちが多発した場合,CPUに負荷が掛かります。また,pipeファイルをオープンするため,オープンファイル数が増加します。
  • システムリソース(CPU,ファイルディスクリプタ)に余裕がある場合に適用します。
《注意事項》
  • HiRDBを新規導入してこのオペランドにpipeを初めて指定した場合,ユニットの開始時にpipeファイルを初期化します。このため,ユニットの開始完了までの時間が今までより長く掛かることがあります。
  • pipeを指定した場合,排他待ちが発生するとpipeファイルをオープンします。このため,システム全体のファイルディスクリプタ(HP-UXの場合はnfile)の見積もりに,次に示す計算式の値を加算してください。
    HiRDB/シングルサーバの場合
    pd_max_users+pd_max_reflect_process_countの値
    HiRDB/パラレルサーバの場合
     (a+3×ユニット内サーバ数)×b
    a:ユニット内のサーバごとに次の計算式を実行して求めた値を合計してください。
    バックエンドサーバの場合:pd_max_bes_process+pd_max_reflect_process_countの値
    ディクショナリサーバの場合:pd_max_dic_process+pd_max_reflect_process_countの値
    pd_max_bes_process又はpd_max_dic_processオペランドを省略している場合はpd_max_usersの値で計算してください。ユニット内に複数のバックエンドサーバがある場合は,バックエンドサーバごとに計算してください。
    b:16(排他待ちスレッド数)
  • Linux版でpipeを指定した場合,排他待ちが発生するとpipeファイルをオープンします。この場合,次に示す方法でpipeファイルオープン数を含むシステムの最大ファイルオープン数を設定する必要があります。
    /etc/rc.d/rc.localに次に示す指定をしてください。
     ・/sbin/sysctl -w fs.file-max = システムの最大ファイルオープン数
《オペランドの省略値》
このオペランドを省略すると,システム共通定義の同じオペランドの指定値が有効となります。システム共通定義の同じオペランドも省略すると,pipeが仮定されます(pd_sysdef_default_optionオペランドにv6compatible又はv7compatibleを指定している場合は,intervalが仮定されます)。

 

21) pd_lck_release_detect_interval = 排他解除検知インターバル時間
〜<符号なし整数>((1〜1000))(単位:ミリ秒)
排他管理用領域の参照は一定のインターバルをおいて行われます。このオペランドにはそのインターバル時間を指定します。
・このオペランドに49以下を指定した場合
インターバル時間はこのオペランドで指定した値から始まり,最大50ミリ秒になります。
・このオペランドに50以上を指定した場合
インターバル時間は50ミリ秒から始まり,最大このオペランドで指定した値になります。
《前提条件》
pd_lck_release_detectオペランドにintervalを指定している必要があります。
《指定値の目安》
  • 基本的にはこのオペランドを省略してください。
    短時間の間に排他が多発し,排他獲得待ちが発生しているため,トランザクション処理性能が大幅に低下している場合に指定値の変更を検討してください。
  • 指定値を小さくすると,排他待ちが多発したときにCPUに負荷が掛かります。
  • 指定値を大きくすると,排他待ち時間が長くなることがあります。
  • 統計解析ユティリティのシステムの稼働に関する統計情報の「排他待ち時間(WAIT TIME)」を参考にして指定値を決定してください。統計情報に出力された排他待ち時間がこのオペランドの値に比べて短い場合は,このオペランドの値を小さくしてください。
  • pd_lck_release_interval_unitオペランドにusecを指定した場合は,最初にこのオペランドに900マイクロ秒程度の値を指定して性能評価を実施してください。CPU使用率に余裕がある場合はこのオペランドの指定値を小さくしてください。
《ほかのオペランドとの関連》
Linux (IPF)版の場合,排他解除検知インターバル時間の単位を,ミリ秒からマイクロ秒に変更できます。詳細については,システム共通定義のpd_lck_release_interval_unitオペランドの説明を参照してください。
《オペランドの省略値》
このオペランドを省略すると,システム共通定義の同じオペランドの指定値が有効となります。システム共通定義の同じオペランドも省略すると,10が仮定されます。

 

22) pd_lck_deadlock_info = Y | N
デッドロック情報タイムアウト情報,及び排他資源管理テーブル情報を出力するかどうかを指定します。デッドロック情報,タイムアウト情報,及び排他資源管理テーブル情報は,$PDDIR/spool/pdlckinf下に出力されます。デッドロック情報,タイムアウト情報,及び排他資源管理テーブル情報については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。
Y:デッドロック情報,タイムアウト情報,及び排他資源管理テーブル情報を出力します。
N:デッドロック情報,タイムアウト情報,及び排他資源管理テーブル情報を出力しません。
《オペランドの省略値》
このオペランドを省略すると,システム共通定義の同じオペランドの指定値が有効となります。システム共通定義の同じオペランドも省略すると,Yが仮定されます。
《ほかのオペランドとの関連》
  • pd_lck_deadlock_checkオペランドにNを指定した場合は,このオペランドには常にNが仮定されます。
  • このオペランドはpd_lck_deadlock_checkオペランドと関連があります。

 

23) pd_lck_deadlock_check = Y | N
デッドロックの発生を監視するかどうかを指定します。
Y:デッドロックの発生を監視します。
N:デッドロックの発生を監視しません。
《指定時の目安》
デッドロックが発生しない業務システムでは,このオペランドにNを指定するとSQLの実行性能が改善することがあります。特に,デッドロックの検出方法がインターバル監視方式の場合,排他制御用プールパーティション数が増加するとデッドロックを検出するたびに排他制御の性能が劣化することがあるため,デッドロックが発生しない業務システムを構築した上でこのオペランドにNを指定することをお勧めします。
デッドロックが発生する業務システムでは,このオペランドにYを指定してください。Nを指定すると,デッドロックが発生した場合,pd_lck_timeoutオペランドに指定した時間が経過するまでSQLが終了しません。また,HiRDBがデッドロック情報を出力しないため,デッドロックが発生した要因が分からなくなるおそれがあります。
《オペランドの省略値》
このオペランドを省略すると,システム共通定義の同じオペランドの指定値が有効となります。システム共通定義の同じオペランドも省略すると,Yが仮定されます。
《注意事項》
このオペランドにNを指定すると,デッドロックが発生したトランザクションはエラーとなりません。この場合,トランザクションは次の要因でキャンセルされます。
  • 排他待ち時間を監視する最大時間が経過し,SQLがエラーリターンする
  • HiRDBクライアントの最大待ち時間が経過し,要求がUAPにエラーリターンする
《クライアント環境定義との関連》
このオペランドは次に示すクライアント環境定義と関連があります。
  • PDCWAITTIME
  • PDLCKWAITTIME
《ほかのオペランドとの関連》
このオペランドは次に示すオペランドと関連があります。
  • pd_lck_deadlock_info
  • pd_lck_pool_partition
  • pd_fes_lck_pool_partition
  • pd_lck_deadlock_check_interval
  • pd_lck_wait_timeout

 

24) pd_lck_deadlock_check_interval = デッドロック監視時間間隔
〜<符号なし整数>((1〜2000000000))(単位:ミリ秒)
インターバル監視方式でデッドロックの発生を監視する場合の,監視を実施する間隔を指定します。
《前提条件》
このオペランドの前提条件は,サーバ種別によって異なります。
シングルサーバ,バックエンドサーバ,又はディクショナリサーバの場合は,次に示す条件をすべて満たしている必要があります。
  • pd_lck_deadlock_checkオペランドにYを指定している
  • pd_lck_pool_partitionオペランドに2以上の値を指定している
フロントエンドサーバの場合は,次に示す条件をすべて満たしている必要があります。
  • pd_lck_deadlock_checkオペランドにYを指定している
  • pd_fes_lck_pool_partitionオペランドに2以上の値を指定している
《指定時の目安》
デッドロックが発生してから検出するまでの時間を短くしたい場合は,このオペランドの指定値を小さくしてください。
《オペランドの省略値》
このオペランドを省略すると,システム共通定義の同じオペランドの指定値が有効となります。システム共通定義の同じオペランドも省略すると,1000が仮定されます。
《注意事項》
  • このオペランドの指定値を小さくし過ぎると,システムのパフォーマンスが低下する場合があります。
  • このオペランド指定値を大きくし過ぎると,次の要因でトランザクションがキャンセルされることがあります。
    ・排他待ち時間を監視する最大時間が経過し,SQLがエラーリターンする
    ・HiRDBクライアントの最大待ち時間が経過し,要求がUAPにエラーリターンする
《クライアント環境定義との関連》
このオペランドは次に示すクライアント環境定義と関連があります。
  • PDCWAITTIME
《ほかのオペランドとの関連》
このオペランドは次に示すオペランドと関連があります。
  • pd_lck_deadlock_check
  • pd_lck_pool_partition
  • pd_fes_lck_pool_partition
  • pd_lck_wait_timeout