2.3.4 外部表へのアクセス性能のチューニング方法

外部表へのアクセスを含む問合せの最適化に関する設定には,次の二つがあります。

 

ここでは,それぞれを使用したアクセス性能のチューニング方法について説明します。

<この項の構成>
(1) 最適化情報パラメタファイル
(2) SQL拡張最適化オプション

(1) 最適化情報パラメタファイル

外部表へのアクセス性能を決定する要因の一つに,実行効率の良いアクセスパスを得られるかどうかがあります。そして,HiRDB External Data Accessのアクセスパスの実行効率を左右する要素の一つに,中間結果行数があります。

最適化情報パラメタファイルの「表の行数」に設定している値と実際の表の行数とが大きく異なると,最適化が中間結果行数の予測を誤まるため,実行効率の良いアクセスパスを選べず,結果としてアクセス性能が悪くなります。つまり,最適化情報パラメタファイルの設定を実際と行数との誤差を小さくすると,アクセス性能を上げることができます。

最適化情報パラメタファイルを使用した外部表へのアクセス性能のチューニングの手順を次に示します。

 

<手順>

  1. 検索結果件数の予測と実測の比較
    次の二つを比較します。
    • アクセスパス情報中の外部サーバの検索結果行数(予測)
    • 統計解析情報中の外部サーバの検索結果行数(実測)
    アクセスパス情報中の外部サーバの検索結果行数(予測)には,アクセスパス表示ユティリティ(pdvwoptコマンド)による実表検索処理情報の「外部サーバからの検索結果行数の予測値」を使用します。アクセスパス表示ユティリティ(pdvwoptコマンド)の引数には,外部サーバへの問合せのアクセスパス情報ファイルを指定してください。
    統計解析情報中の外部サーバの検索結果行数(実測)には,統計解析ユティリティ(pdsteditコマンド)による外部サーバ利用状況の出力結果「外部サーバへの検索行数」を使用します。
    比較の結果,二つの値が一けた以上異なり,かつ絶対値も大きい場合には,チューニングを行う余地があります。この状況は,次のような状態のときに発生しやすくなっています。
    • 外表行数が多いにもかかわらず,ネストループジョインや分散ネストループジョインを行っている
    • ジョインでの絞込みが小さい(結果行数が多い)にもかかわらず,ジョインを外部サーバで実行している
  2. 最適化情報の設定
    上記の比較の結果チューニングを行う余地がある場合,最適化情報パラメタファイルの表の行数を,統計解析情報中の外部サーバの検索結果行数(実測)を基に設定し,最適化情報収集ユティリティ(pdgetcstコマンド)を実行します。
  3. 効果の確認
    チューニングの効果を確認します。最適化情報パラメタファイルの設定は,最適化情報を設定した表を使用するすべての問合せに影響します。したがって,最適化情報パラメタファイルの設定後は,システム全体の性能を検証してください。

(2) SQL拡張最適化オプション

外部表へのアクセス性能を決定する要因の一つに,実行効率の良いアクセスパスを得られるかどうかがあります。そして,HiRDB External Data Accessのアクセスパスの実行効率を左右する要素の一つに,コストベースの最適化があります。

外部表へのアクセスを含むコストベースの最適化では,HiRDBによって通常性能が低いと予測されたアクセスパス候補は,アクセスパス生成から除外するという動作を行っています。これらの動作は,中間結果の転送量を削減することを目的としています。アクセスパス生成のデフォルト動作一覧を次の表に示します。

表2-9 アクセスパス生成に関するデフォルト動作一覧

名称デフォルト動作
ジョインを含むSQL文の外部サーバ実行外部サーバで実行可能なジョインは,外部サーバでジョインを行うアクセスパスを使用します。
直積を含むSQL文の外部サーバ実行直積は,結果行数が増加する可能性があるので,外部サーバで実行しません。
探索高速化条件の導出外部サーバ実行可能な探索条件(探索高速化条件)を導出します。探索高速化条件については,「2.3.2 外部表へのアクセスの性能設計に関連する機能」またはマニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。

これらのデフォルト動作がアクセス性能のボトルネックとなる場合,システム共通定義のSQL拡張最適化オプションを設定して,外部表へのアクセスを含む問合せの最適化のチューニングをする余地があります。

外部表へのアクセス性能に関するSQL拡張最適化オプションの設定項目を,次の表に示します。

表2-10 外部表へのアクセス性能に関するSQL拡張最適化オプションの設定項目

設定項目説明設定のねらい副作用
ジョインを含むSQL文の外部サーバ実行の抑止ジョインを外部サーバで実行しないアクセスパスを生成します。
ジョインが外部サーバで実行されている場合,この機能を用いてアクセスパスのチューニングを行うことができます。チューニング効果の検証は,設定変更後アクセスパスのチェックで行ってください。
結果の大きいジョインを外部サーバで実行しないことで,中間結果の転送量を削減します。結果の小さいジョインを外部サーバで実行しなかった場合,中間結果の転送量が増えるおそれがあります。
直積を含むSQL文の外部サーバ実行の強制できる限り直積を外部サーバで行うアクセスパスを生成します。
直積が外部サーバではなくHiRDBサーバで実行されている場合,この機能を用いてアクセスパスのチューニングを行うことができます。チューニング効果の検証は,設定変更後アクセスパスのチェックで行ってください。
結果が小さい直積を外部サーバで実行することで,中間結果の転送量を削減します。結果の大きい直積を外部サーバで実行した場合,中間結果の転送量が増えるおそれがあります。
外部サーバ実行可能な探索高速化条件の導出の抑止外部サーバ実行が可能な場合でも探索高速化条件を導出する動作を行わないで,SQLを発行します。
チューニング効果の検証は,設定変更後アクセスパスのチェックで行ってください。
探索高速化条件を導出する時間を節約します。
また,探索高速化条件が外部サーバの混乱を引き起こす場合に,その影響を排除します。
中間結果の絞込みに有効な探索高速化条件が導出されないおそれがあります。