スケーラブルデータベースサーバ HiRDB Version 8 システム運用ガイド(UNIX(R)用)

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

9.10 排他制御用プールを分割する方法

通常,排他制御の処理はサーバごとに一元管理されており,排他制御用プールは一つです。そのため,トランザクションの多重実行数と稼働率が高いシステムでは,排他待ち数がトランザクションの常時多重実行数と同じになり,排他制御の操作に時間が掛かってしまいます。

この状態は,排他制御用プールを複数に分割して,排他制御の処理を分散させることで回避できます。排他制御用プールを分割したものを排他制御用プールパーティションといいます。

それぞれの排他資源が,異なる排他制御用プールパーティションを使用すると,排他制御処理が分散され,排他待ち数が少なくなる場合があります。これによって,排他制御に掛かる時間が減るため,SQLの実行時間が短縮できます。排他制御処理の分散の例を次の図に示します。

図9-5 排他制御処理の分散

[図データ]

[説明]
排他制御用プールが一つの場合は,排他資源Aの排他操作が終わるまで,排他資源B及びCの排他操作は待たされます。一方,排他制御用プールが複数ある場合は,排他資源A,排他資源B,排他資源Cそれぞれの排他操作が同時に行われます。

ただし,特定の排他資源に対して処理が集中した場合は,排他制御処理は分散されません。この場合,排他待ち数は変わらないため,SQLの実行時間は短縮できません。

<この節の構成>
(1) 指定方法
(2) 排他制御処理を分散させた場合のメリット及びデメリット
(3) 注意事項

(1) 指定方法

pd_lck_pool_partitionオペランド(フロントエンドサーバの場合はpd_fes_lck_pool_partitionオペランド)に排他制御用プールの分割数を指定します。これによって,排他制御処理を分散させることができます。

pd_lck_pool_partitionオペランド及びpd_fes_lck_pool_partitionオペランドについては,マニュアル「HiRDB Version 8 システム定義」を参照してください。

指定値を決定する手順を次の図に示します。

図9-6 pd_lck_pool_partitionオペランドの指定値を決定する手順

[図データ]

(a) 初期構築時

トランザクションの多重実行数に従って,排他制御用プールパーティション数を指定します。指定値の目安を次に示します。

排他制御用プールパーティション数=トランザクションの多重実行数÷50

また,初期構築以降にチューニングした場合,共用メモリの使用量が変わります。そのため,チューニングする可能性がある場合は,事前に共用メモリの使用量を計算して必要な物理メモリの確保,及びOSパラメタの設定をすることを推奨します。

(b) チューニング

排他制御用プールパーティション数をチューニングする場合は,次の情報が必要になります。

実際に業務内容を想定した多重実行数と稼働率でアプリケーションを実行し,チューニング情報を取得してください。取得したチューニング情報を基に排他制御用プールパーティション数を徐々に増加しながら,業務アプリケーション全体でSQL実行時間の合計が最も短くなる排他制御用プールパーティション数を設定してください。

ただし,次に示す場合は排他制御用プールパーティション数をチューニング前の値に戻して,ほかの方法で性能向上を図ってください。

なお,排他制御処理を分散させた場合,ハッシュ分割によって排他資源ごとに使用する排他制御用プールパーティションを決定します。そのため,対象となる排他資源によっては,使用する排他制御用プールパーティションに偏りが発生することがあります。使用する排他制御用プールパーティションが偏ると,次の現象が発生するおそれがあります。

使用する排他制御用プールパーティションに偏りが発生しているかどうかは,pdls -d lck -p -eコマンドを実行すると表示されます。排他制御用プールパーティションごとの最大使用率が,テーブルごとに大きく異なる場合は,排他制御用プールパーティションに偏りが発生しています。

(2) 排他制御処理を分散させた場合のメリット及びデメリット

排他制御処理を分散させた場合のSQLごとのメリット及びデメリットを次の表に示します。

表9-4 排他制御処理を分散させた場合のメリット及びデメリット

SQL 排他制御用プールパーティション数を増やした場合 排他制御用プールパーティション数を減らした場合
メリット デメリット メリット デメリット
処理完了時にCOMMIT及びROLLBACKをしないSQL(ほとんどの操作系SQL及び制御系SQLの一部など) 多重実行時のSQL性能が向上します。 SQL単体の性能が劣化します。 SQL単体の性能が向上します。 多重実行時のSQLの性能が劣化します
処理完了と同時にCOMMIT又はROLLBACKをするSQL(COMMIT,ROLLBACK,定義系SQL,PURGE TABLEなど) 多重実行時のSQLの性能が劣化します。また,SQL単体の性能も劣化します。 多重実行時のSQLの性能が向上します。また,SQL単体での性能も向上します。

(凡例) −:該当しません。


(3) 注意事項

排他制御処理を分散させると,排他制御が使用する管理情報を排他制御用プールパーティション数分追加するため,ユニットコントローラ用共用メモリのサイズが増加します。ユニットコントローラが使用する共用メモリの計算式については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。排他制御用プールパーティション数を増やす場合は,ユニットコントローラ用共用メモリのサイズの増加によって,物理メモリやOSパラメタの指定値が不足しないよう,必要に応じてシステム構成を変更してください。