外部表へのアクセスを含む問合せの最適化に関する設定には,次の二つがあります。
ここでは,それぞれを使用したアクセス性能のチューニング方法について説明します。
外部表へのアクセス性能を決定する要因の一つに,実行効率の良いアクセスパスを得られるかどうかがあります。そして,HiRDB External Data Accessのアクセスパスの実行効率を左右する要素の一つに,中間結果行数があります。
最適化情報パラメタファイルの「表の行数」に設定している値と実際の表の行数とが大きく異なると,最適化が中間結果行数の予測を誤まるため,実行効率の良いアクセスパスを選べず,結果としてアクセス性能が悪くなります。つまり,最適化情報パラメタファイルの設定を実際と行数との誤差を小さくすると,アクセス性能を上げることができます。
最適化情報パラメタファイルを使用した外部表へのアクセス性能のチューニングの手順を次に示します。
<手順>
外部表へのアクセス性能を決定する要因の一つに,実行効率の良いアクセスパスを得られるかどうかがあります。そして,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を発行します。 チューニング効果の検証は,設定変更後アクセスパスのチェックで行ってください。 | 探索高速化条件を導出する時間を節約します。 また,探索高速化条件が外部サーバの混乱を引き起こす場合に,その影響を排除します。 | 中間結果の絞込みに有効な探索高速化条件が導出されないおそれがあります。 |