8.5.2 システム運用時の考慮点
トランザクション又はコマンド(ユティリティを含む)の実行時,次に示す現象が発生して通信エラーとなることがあります。その結果,トランザクション又はコマンドがエラーとなったり,ホスト間監視によって,ユニットの異常が検知(KFPS05289-Eメッセージが出力)されたりすることがあります。
-
リモートシェルが使用するポート数が不足する
HiRDBのコマンドを実行すると,内部的にリモートシェルが実行されます。そのため,コマンドの実行対象となるユニットやサーバ数が多い場合,リモートシェルが使用するポート数が不足することがあります。
-
システムで使用するポート数が不足する
ユニット又はサーバ数が多い場合,HiRDBのサーバ間通信の接続数が増加し,システムで使用するポート数が不足することがあります。
-
ネットワーク帯域が不足する
ユニット又はサーバ数が多い場合,HiRDBのサーバ間通信の接続数が増加し,ネットワーク帯域が不足することがあります。
このような現象が発生した場合,次に示す方法で通信負荷を軽減してください。
- 〈この項の構成〉
-
(1) コマンドを実行するときにユニット名を指定する
次に示すコマンドを実行するときは,ユニット名を指定してください。ユニット名を指定すると,ユニット単位でコマンドが実行されるため,コマンドを実行する際に使用されるポート数を削減できます。
-
pdaudbegin,pdaudend,pdaudrm,pdaudswap
-
pdcancel
-
pdcat
-
pdrisechk
-
pdstscls,pdstsinit,pdstsopen,pdstsrm,pdstsswap
-
pdstbegin,pdstend
-
pdcmt,pdrbk,pdfgt
-
pdls(サーバ名を指定してもよい)
ただし,ユニット単位にコマンドを実行した場合でも,そのコマンド処理の延長でほかのユニットに処理要求が発生するときは一時的にポートが不足することがあります。その場合はしばらく時間を置いてからコマンドを再度実行してください。
(2) コマンドを実行するときにサーバ名を指定する
次に示すコマンドを実行するときは,サーバ名を指定してください。サーバ名を指定すると,サーバ単位でコマンドが実行されるため,コマンドを実行する際に使用されるポート数を削減できます。
-
pdchprc
-
pdclttrc
-
pdjarsync
-
pdlogadpf,pdlogchg,pdlogcls,pdloginit,pdlogls,pdlogopen,pdlogrm,pdlogswap,pdlogsync,pdlogunld,pdlogatul
-
pdobils
-
pdpfresh
ただし,サーバ単位にコマンドを実行した場合でも,そのコマンド処理の延長でほかのユニットに処理要求が発生するときは一時的にポートが不足することがあります。その場合はしばらく時間を置いてからコマンドを再度実行してください。
(3) pddbstコマンドの実行時に通信負荷を軽減する方法
pddbstコマンドを実行する場合は,状態解析をRDエリア単位で実行してください。
(4) pdloadコマンドの実行時に通信負荷を軽減する方法
pdloadコマンドを実行する場合,入力ファイルを分割格納条件ごとに作成し,RDエリア単位にpdloadコマンドを実行すると,通信負荷を軽減できます。
また,作成した複数の入力ファイルを1か所(同一サーバマシン上)に配置するのではなく,表格納RDエリアがあるサーバマシンに配置すると,通信負荷を軽減できます。
(5) pdrorgコマンドの実行時に通信負荷を軽減する方法
pdrorgコマンドで表の再編成,表のアンロード,表のリロードを実行する場合,RDエリア単位又はサーバ単位でpdrorgコマンドを実行すると,通信負荷を軽減できます。
pdrorgコマンドでインデクスの再作成,インデクスの再編成,インデクスの一括作成を実行する場合,インデクス単位又はサーバ単位でpdrorgコマンドを実行すると,通信負荷を軽減できます。
(6) pdcopy又はpdrstrコマンドの実行時に通信負荷を軽減する方法
pdcopy又はpdrstrコマンドを実行する場合,次に示す方法で通信負荷を軽減できます。
-
-sオプションにサーバ名を一つだけ指定してコマンドを実行する
-
-rオプションに複数のRDエリア名を指定する場合,同じバックエンドサーバに属するRDエリアだけを指定してコマンドを実行する
また,コマンドの処理対象となるサーバマシンにバックアップファイルを配置すると,通信負荷を軽減できます。
(7) SQLの実行時に通信負荷を軽減する方法
一つのトランザクションで複数のバックエンドサーバ下のデータをアクセスする場合,サーバ間でデータ通信が発生するため,サーバ間のデータ通信経路を極力減らすようにしてください。次に示す条件を一つでも満たす場合,複数のバックエンドサーバ下のデータをアクセスします。
-
複数のバックエンドサーバに横分割した表を指定したSQLを発行する
-
FROM句に二つ以上の表を指定したSQLを発行する
-
副問合せを指定したSQLを発行する
-
集合演算を指定したSQLを発行する
-
共用表のデータを更新するSQLを発行する
-
同一トランザクション内に複数のSQLを発行する場合,それぞれのSQLのFROM句に異なるバックエンドサーバに定義された表を指定する
これらの条件を一つでも満たす場合は,次に示す対策をして,サーバ間のデータ通信経路を削減してください。
-
横分割表の分割数を少なくする
-
SQLの探索条件に分割キーに対する条件を指定する
-
表の結合時は,対象となる表の分割を合わせ,結合キーを分割キーとする
-
トランザクションがアクセスする複数の表のデータを同じバックエンドサーバに格納する
(8) フロータブルサーバの使用時に通信負荷を軽減する方法
フロータブルサーバを使用すると通信負荷が上がるため,フロータブルサーバを極力使用しないでください。次に示す条件を一つでも満たす場合,フロータブルサーバが使用されます。
-
FROM句に二つ以上の表を指定したSQLを発行する(結合方式にネストループジョインを適用する場合を除く)
-
副問合せを指定したSQLを発行する
-
集合演算を指定したSQLを発行する
-
ORDER BY句を指定したSQLを発行する(ORDER BYのためのソート処理をしなくても,インデクスを検索することでORDER BYに含まれる列のソート順を保証できる場合を除く)
-
GROUP BY句を指定したSQLを発行する
-
DISTINCTを指定したSQLを発行する
-
ビュー表,WITH句,又はFROM句に導出表を指定したSQLを発行する(ビュー表,WITH句を指定したSQLで内部導出表を作成しない場合を除く)
内部導出表を作成する条件については,マニュアル「HiRDB SQLリファレンス」を参照してください。
-
FOR READ ONLY句を指定したSQLを発行する
これらの条件を一つでも満たす場合は,次に示す対策をすると,使用するフロータブルサーバ数を削減できることがあります。
-
SQL最適化オプションに"FLTS_ONLY_DATA_BES"を指定する
-
SQL最適化オプションに"SORT_DATA_BES"を指定する
SQL最適化オプションについては,マニュアル「HiRDB UAP開発ガイド」を参照してください。
(9) 共用表の使用時に通信負荷を軽減する方法
複数のフロントエンドサーバを経由して共用表を更新すると,通信負荷が上がります。そのため,共用表の更新をする場合は,HiRDBクライアントが接続するフロントエンドサーバができるだけ同じになるようにしてください。
(10) ユティリティの同時実行数に関する注意事項
バックエンドサーバ数が多い場合,ユティリティの同時実行数が多いと,ユティリティが異常終了することがあります。この場合,同時に実行するユティリティの数を減らすなどの対処をしてください。
(11) 接続ユーザ情報ファイルが出力されない場合の対処方法
KFPS05120-Wメッセージが出力された場合に,$PDDIR/spool/cnctusrinf下に接続ユーザ情報ファイルが出力されないことがあります。この場合,pdls -d act,pdls -d prc,及びpdls -d trnコマンドを各ユニットに対して実行してください。
接続ユーザ情報ファイルについては,マニュアル「HiRDB システム運用ガイド」を参照してください。
(12) 制限事項
-
ユニット数が65以上の場合,MIBパフォーマンス情報監視機能は使用できません。
-
リモートシェルが使用できるポート数の上限を超えた場合,次に示すコマンドは実行できません。
-
pdconfchk
-
pdls -d rpc
-