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

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

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

14) pd_lck_pool_size = サーバ当たりの排他制御用プールサイズ
〜<符号なし整数>(単位:キロバイト)
  • 32ビットモードの場合:((1〜2000000))《16000》
  • 64ビットモードの場合:((1〜2000000000))《32000》
HiRDB/シングルサーバの場合は,シングルサーバの排他制御で使用する共用メモリ領域排他制御用プール)の大きさをキロバイト単位で指定します。
HiRDB/パラレルサーバの場合は,バックエンドサーバ及びディクショナリサーバの排他制御で使用する共用メモリ領域の大きさをキロバイト単位で指定します。なお,フロントエンドサーバの排他制御で使用する共用メモリ領域の大きさは,pd_fes_lck_pool_sizeオペランドで指定してください。
このオペランドの指定対象の領域は,排他資源管理テーブルとして使用されます。排他資源管理テーブル数,排他要求数,及び排他制御用プールサイズの間には,次の関係があります。
「排他資源管理テーブル数」=「排他要求数」=「排他制御用プールサイズ」×係数
係数には,32ビットモードの場合は6,64ビットモードの場合は4を代入します。
《指定値の目安》
  • 32ビットモードの場合,6件の排他要求で1キロバイトの排他制御用プールサイズが必要です。
  • 64ビットモードの場合,4件の排他要求で1キロバイトの排他制御用プールサイズが必要です。
  • 次に示す計算式でこのオペランドの指定値を見積もってください。
    HiRDBの種類 計算式(単位:キロバイト)
    HiRDB/シングルサーバの場合(32ビットモード) ↑↑a÷pd_lck_pool_partitionの値↑÷6↑×pd_lck_pool_partitionの値
    HiRDB/パラレルサーバの場合(32ビットモード) ↑↑b÷pd_lck_pool_partitionの値↑÷6↑×pd_lck_pool_partitionの値
    HiRDB/シングルサーバの場合(64ビットモード) ↑↑a÷pd_lck_pool_partitionの値↑÷4↑×pd_lck_pool_partitionの値
    HiRDB/パラレルサーバの場合(64ビットモード) ↑↑b÷pd_lck_pool_partitionの値↑÷4↑×pd_lck_pool_partitionの値
    a:シングルサーバで同時実行するトランザクションの排他要求数の総和です。排他要求数はSQLによって異なります。排他要求数の総和の求め方については,「付録D 排他資源数の見積もり」を参照してください。
    b:各サーバ(ディクショナリサーバ又はバックエンドサーバ)で同時実行するトランザクションの排他要求数の総和です。排他要求数はSQLによって異なります。排他要求数の総和の求め方については,「付録D 排他資源数の見積もり」を参照してください。

    特に,定義系SQLのDROP TABLE又はDROP SCHEMAを実行する場合は,このオペランドの指定値を正確に見積もって指定してください。
《指定値のチューニング方法》
統計解析ユティリティ(システムの稼働に関する統計情報)の「排他資源管理テーブル使用率(%OF USE LOCK TABLE)」を参照してください。使用率の最大値が80%以上の場合は,これからのデータベース拡張に備えて,このオペランドの値を大きくすることをお勧めします。使用率の最大値が10%以下の場合は,共用メモリを節約するために,このオペランドの値を小さくすることをお勧めします。
注※
HiRDB/パラレルサーバの場合は「サーバごとのシステムの稼働に関する統計情報」で,ディクショナリサーバ及びバックエンドサーバの「排他資源管理テーブル使用率(%OF USE LOCK TABLE)」を参照してください。
《注意事項》
  • このオペランドの指定値が小さ過ぎると,SQLがエラーリターンすることがあります。
  • このオペランドには,必要以上に大きな値を指定しないでください。このオペランドの指定値を大きくすると,HiRDBが使用する共用メモリが増加します。これによって,共用メモリが不足しHiRDBを開始できないことがあります。
《ほかのオペランドとの関連》
  • pd_sysdef_default_optionオペランドにv6compatibleを指定している場合,このオペランドの省略値は1024になります。
  • このオペランドは,pd_lck_pool_partitionオペランドと関連があります。

 

15) pd_fes_lck_pool_size = フロントエンドサーバの排他制御用プールサイズ
〜<符号なし整数>(単位:キロバイト)
  • 32ビットモードの場合:((1〜2000000))
  • 64ビットモードの場合:((1〜2000000000))
このオペランドはHiRDB/パラレルサーバ限定のオペランドです。
フロントエンドサーバの排他制御で使用する共用メモリ領域排他制御用プール)の大きさをキロバイト単位で指定します。なお,シングルサーバ,ディクショナリサーバ,又はバックエンドサーバの排他制御で使用する共用メモリ領域の大きさは,pd_lck_pool_sizeオペランドで指定してください。
このオペランドの指定対象の領域は,排他資源管理テーブルとして使用されます。排他資源管理テーブル数,排他要求数,及び排他制御用プールサイズの間には,次の関係があります。
「排他資源管理テーブル数」=「排他要求数」=「排他制御用プールサイズ」×係数
係数には,32ビットモードの場合は6,64ビットモードの場合は4を代入します。
《指定値の目安》
  • 32ビットモードの場合,6件の排他要求で1キロバイトの排他制御用プールサイズが必要です。
  • 64ビットモードの場合,4件の排他要求で1キロバイトの排他制御用プールサイズが必要です。
  • 次に示す計算式を基に,このオペランドの指定値を見積もってください。
    ↑↑(a+b)÷pd_fes_lck_pool_partitionの値↑÷c↑×pd_fes_lck_pool_partitionの値  (キロバイト)
    a:フロントエンドサーバで同時実行するトランザクションの排他要求数の総和です。排他要求数はSQLによって異なります。排他要求数の総和の求め方については,「付録D 排他資源数の見積もり」を参照してください。
    b:(pd_max_users+pd_max_reflect_process_countの値+3)×(pd_max_access_tablesの値+4)
    c:32ビットモードの場合は6,64ビットモードの場合は4を代入してください。
《指定値のチューニング方法》
統計解析ユティリティ(サーバごとのシステムの稼働に関する統計情報)で,フロントエンドサーバの「排他資源管理テーブル使用率(%OF USE LOCK TABLE)」を参照してください。使用率の最大値が80%以上の場合は,これからのデータベース拡張に備えて,このオペランドの値を大きくすることをお勧めします。使用率の最大値が10%以下の場合は,共用メモリを節約するために,このオペランドの値を小さくすることをお勧めします。
《オペランドの省略値》
このオペランドの省略値を次に示します。
・32ビットモードの場合
{(pd_max_users+pd_max_reflect_process_countの値+3)×(pd_max_access_tablesの値+4)}÷ 6
・64ビットモードの場合
{(pd_max_users+pd_max_reflect_process_countの値+3)×(pd_max_access_tablesの値+4)}÷ 4
《注意事項》
  • このオペランドの指定値が小さ過ぎると,SQLがエラーリターンすることがあります。
  • このオペランドには,必要以上に大きな値を指定しないでください。このオペランドの指定値を大きくすると,HiRDBが使用する共用メモリが増加します。これによって,共用メモリが不足しHiRDBを開始できないことがあります。
《ほかのオペランドとの関連》
このオペランドは,pd_fes_lck_pool_partitionオペランドと関連があります。

 

16) pd_lck_pool_partition = サーバ当たりの排他制御用プール分割数
〜<符号なし整数>((1〜5000))《1》
排他制御処理の分散をする場合にこのオペランドを指定してください。
HiRDB/シングルサーバの場合は,排他制御処理の分散をするときにシングルサーバの排他制御で使用する排他制御用プールパーティション数を指定します。
HiRDB/パラレルサーバの場合は,排他制御処理の分散をするときにバックエンドサーバ及びディクショナリサーバの排他制御で使用する排他制御用プールパーティション数を指定します。なお,フロントエンドサーバの排他制御で使用する排他制御用プールパーティション数は,pd_fes_lck_pool_partitionオペランドで指定してください。
排他制御処理の分散については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。
《指定値のチューニング方法》
排他制御用プールパーティション数のチューニング方法については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。
《注意事項》
  • このオペランドの指定値を大きくし過ぎると,各排他制御用プールパーティションに割り当てられる共用メモリのサイズが小さくなるため,排他制御用プールパーティションが容量不足となりSQLがエラーリターンすることがあります。また,排他制御の処理に時間が掛かるため,システムのパフォーマンスが下がります。この場合,このオペランドの指定値を小さくしてください。
  • 排他制御用プールサイズは1キロバイト以上必要であるため,pd_lck_pool_sizeの値よりも大きな値を指定した場合,このオペランドにはpd_lck_pool_sizeの値が仮定されます。また,このとき,KFPS00421-Wメッセージが出力されます。
《ほかのオペランドとの関連》
このオペランドは次に示すオペランドと関連があります。
  • pd_lck_pool_size
  • pd_lck_deadlock_check_interval

 

17) pd_fes_lck_pool_partition = フロントエンドサーバの排他制御用プール分割数
〜<符号なし整数>((1〜5000))《1》
排他制御処理の分散をするときにフロントエンドサーバの排他制御で使用する排他制御用プールパーティション数を指定します。なお,シングルサーバ,ディクショナリサーバ,又はバックエンドサーバの排他制御で使用する排他制御用プールパーティション数は,pd_lck_pool_partitionオペランドで指定してください。
排他制御処理の分散については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。
《指定値のチューニング方法》
排他制御用プールパーティション数のチューニング方法については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。
《注意事項》
  • このオペランドの指定値を大きくし過ぎると,各排他制御用プールパーティションに割り当てられる共用メモリのサイズが小さくなるため,排他制御用プールパーティションが容量不足となりSQLがエラーリターンすることがあります。また,排他制御の処理に時間が掛かるため,システムのパフォーマンスが下がります。この場合,このオペランドの指定値を小さくしてください。
  • 排他制御用プールサイズは1キロバイト以上必要であるため,pd_lck_pool_sizeの値よりも大きな値を指定した場合,このオペランドにはpd_lck_pool_sizeの値が仮定されます。また,このとき,KFPS00421-Wメッセージが出力されます。
《ほかのオペランドとの関連》
このオペランドは次に示すオペランドと関連があります。
  • pd_fes_lck_pool_size
  • pd_lck_deadlock_check_interval

 

18) pd_lck_until_disconnect_cnt = 1サーバ当たりのUNTIL DISCONNECT指定の排他表とRDエリア数の総和
〜<符号なし整数>((0〜140000))《256》
トランザクションを越えて保持する表,RDエリア,インナレプリカ構成管理,及びレプリカグループ構成管理の排他資源数を指定します。このオペランドの値に従って,表,RDエリア,インナレプリカ構成管理,レプリカグループ構成管理のUNTIL DISCONNECT指定の排他を管理するブロックを共用メモリに確保します。
《指定値の目安》
通常はこのオペランドを指定する必要はありません。次に示す場合に指定値を変更するかどうかを検討してください。
  • 同時に実行するユティリティの数を大量に増やす場合
  • ホールダブルカーソルを使用する場合
  • pdlbufferオペランドで指定したローカルバッファを使用する場合
  • 共用RDエリアを使用する場合
このオペランドの指定値の見積もり方法については,「付録C.5 1サーバ当たりのUNTIL DISCONNECT指定の排他表とRDエリア数の総和(pd_lck_until_disconnect_cnt)の見積もり式」を参照してください。
《指定値のチューニング方法》
このオペランドの指定値が小さいと,トランザクションがロールバックしたり,リターンコード8でユティリティが異常終了したりします。このとき,KFPA11914-E,又はKFPH28001-Eメッセージが出力されます。この現象が発生したら,このオペランドの値を大きくしてください。
なお,このオペランドの値を大きくすると,それに比例して必要なメモリも増加します。必要なメモリは「このオペランドの値×48(64ビットモードの場合は64)」バイトです。

 

19) pd_max_open_holdable_cursors = UNTIL DISCONNECT指定LOCK文非実行時のホールダブルカーソルの最大同時オープン数
〜<符号なし整数>((16〜1024))《16》
UNTIL DISCONNECT指定のLOCK文を実行しない表に対してホールダブルカーソルを使用する場合に,そのホールダブルカーソルのトランザクション当たりの最大同時オープン数を指定します。
《注意事項》
このオペランドに省略時解釈値以外の値を指定すると,共用メモリ使用量が増加します。
《ほかのオペランドとの関連》
このオペランドと次に示すオペランドの指定値は,ロックサーバの共用メモリサイズ計算に使用されます。32ビットモードのHiRDBの場合,各オペランドの指定値が大き過ぎると,ロックサーバの共用メモリサイズが2ギガバイトを超えるため,HiRDBを開始できなくなることがあります。ロックサーバの共用メモリサイズが2ギガバイトを超えないように,このオペランドと次に示すオペランドの指定値を調整してください。
  • pd_max_access_tables
  • pd_max_users
  • pd_max_bes_process
  • pd_max_dic_process
  • pd_lck_hash_entry
  • pd_lck_pool_size
共用メモリについては,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。

 

20) pd_lck_hash_entry = 排他制御用プールで使用するハッシュエントリ数
〜<符号なし整数>((0〜2147483647))《0》
排他制御用プールで使用するハッシュテーブルのエントリ数を指定します。HiRDBはここで指定された値に従ってサーバ(シングルサーバ,フロントエンドサーバ,バックエンドサーバ,ディクショナリサーバ)ごとにユニットコントローラ用の共用メモリに排他制御用プールを確保します。
《指定値の目安》
通常はこのオペランドを省略してください。
次に示す条件に該当する場合は指定値を検討してください。
  • バージョン06-02以降にバージョンアップする場合に共用メモリサイズをできるだけ変更したくないときは11261を指定してください。この場合,バージョンアップ前と同数のハッシュエントリ数を確保するため,排他制御用プール中のハッシュテーブルサイズがバージョンアップ前と同じになります。
  • このオペランドに推奨値より大きい値を指定すると,性能が向上することがあります。ただし,《推奨値の求め方》の変数aより大きい値を指定しても,aを指定したときよりも性能が向上することはありません。
《オペランドの規則》
  • このオペランド及び各サーバ定義のpd_lck_hash_entryオペランドを省略するか,又はこのオペランドに0を指定すると,HiRDBはサーバごとに推奨値を計算します(pd_sysdef_default_optionオペランドにv6compatibleを指定している場合は11261が仮定されます)。推奨値については《推奨値の求め方》を参照してください。
  • このオペランドに0でも素数でもない値を指定した場合,HiRDBはその指定値を超えない最大の素数が指定されたと仮定します。
《注意事項》
このオペランドの指定値が小さ過ぎると,ハッシュエントリ不足が発生して性能が低下することがあります。このオペランドを省略すれば,ハッシュエントリ不足及びハッシュエントリ不足による性能低下は発生しません。
《推奨値の求め方》
推奨値を次に示します。
推奨値=MAX(↑a÷10↑,11261)を超えない最大の素数
変数 変数の算出式
シングルサーバの場合 (pd_max_users+pd_max_reflect_process_countの値+3)×(pd_max_access_tablesの値+14)+pd_lck_pool_size×c
フロントエンドサーバの場合 pd_fes_lck_pool_sizeが省略されている場合 (b+3)×(pd_max_access_tablesの値+4)
pd_fes_lck_pool_sizeが指定されている場合 pd_fes_lck_pool_size値×c
バックエンドサーバ,ディクショナリサーバの場合 (b+3)×10+pd_lck_pool_sizeの値×c
フロントエンドサーバの場合 マルチフロントエンドサーバの場合 pd_max_users+pd_max_reflect_process_countの値+1
マルチフロントエンドサーバでない場合 pd_max_users+pd_max_reflect_process_countの値
バックエンドサーバの場合 pd_max_usersの値>pd_max_bes_processの値の場合 pd_max_users+pd_max_reflect_process_countの値
pd_max_usersの値≦pd_max_bes_processの値の場合 pd_max_bes_process+pd_max_reflect_process_countの値
ディクショナリサーバの場合 pd_max_usersの値>pd_max_dic_processの値の場合 pd_max_users+pd_max_reflect_process_countの値
pd_max_usersの値≦pd_max_dic_processの値の場合 pd_max_dic_process+pd_max_reflect_process_countの値
32ビットモードの場合は6,64ビットモードの場合は4

 

21) pd_dbsync_lck_release_count = シンクポイント時のグローバルバッファ排他解除間隔
〜<符号なし整数>((0,100〜1073741824))《10000》
シンクポイント時に発生するグローバルバッファへの排他を解除する間隔を指定します。
シンクポイント時には,ディスクに反映する必要があるバッファ(更新バッファ)のサーチ処理が発生します。通常は,更新バッファのサーチ処理中に,一定間隔でグローバルバッファへの排他を解除します。
例えば100を指定した場合,100面(グローバルバッファの面数)のサーチ処理が完了すると,一度排他を解除します。その後,再度排他を掛けてサーチ処理を続行します。このように100面ごとに排他の解除をします。
《利点》
このオペランドを指定すると,シンクポイント時のグローバルバッファの排他占有時間を調整できます。このオペランドの値を小さくすると,グローバルバッファの排他占有時間が短くなり,シンクポイント時のトラザクション性能が向上することがあります。
グローバルバッファプールの排他占有時間については,統計解析ユティリティを実行して,グローバルバッファプールに関する統計情報の「シンクポイント時のバッファプール排他占有時間(SYNCL)」で確認できます。
《指定値の目安》
通常は,このオペランドを指定する必要はありません。次に示す条件をすべて満たす場合にこのオペランドの指定を検討してください。
  • シンクポイント時にトランザクション性能が低下する
  • pdbufferオペランドの-nオプションに指定したバッファ面数が非常に大きい
《オペランドの規則》
  • 1から99までの値を指定した場合,自動的に100が設定されます。
  • 0を指定した場合,更新バッファのサーチ処理が完了するまで,グローバルバッファに対して排他が掛かります。
《注意事項》
このオペランドの値を小さくすると,ほかのトランザクションの割り込みによって,更新バッファのサーチ時間が長くなります。その間に更新されたグローバルバッファもシンクポイント時の出力対象になります。このため,シンクポイント時に出力される更新バッファ数が増加します。シンクポイント時に出力対象となる更新バッファ数については,統計解析ユティリティの,グローバルバッファプールに関する統計情報の「シンクポイント出力ページ数(SYNCW)」で確認できます。