アクセスプランの確認ポイントとしては、以下があります。
処理に時間がかかるアクセス方式が選択されていないか、インデックスが適切に使用されているかを確認します。
適切なジョイン系アクセスモデルが選択されているかを確認します
SQL文に対するアドバイスを確認します。また、ASSIST指定が有効となっているかを確認します。
ソート作業域、ワーク作業域が不足していないかを確認します。
参照
アクセスプランの出力形式や出力内容は、“SQLTOOLユーザーズガイド”を参照してください。
アクセス方式を確認する
アクセスプランのSCANエレメントのscan typeでアクセス方式を確認します。
scan typeの表示内容 | アクセス方式 |
---|---|
TABLE KEY SCAN | 表をキー値で検索 |
TABLE ALL SCAN | 表の全文検索 |
TABLE PARALLEL SCAN | 表の全件を並列に検索 |
INDEX KEY SCAN(n) | インデックス検索 |
INDEX ALL SCAN | インデックスの全件を順検索 |
INDEX TABLE SCAN(n) | インデックスをキー範囲検索しながら表のレコードも取り出す |
処理に時間がかかるアクセス方式が選択されていないか、インデックスが適切に使用されているかを確認します。
適切なアクセス方式でない場合には、アクセス方式をチューニングします。
アクセス方式のチューニング方法については、“4.1 アクセス方式のチューニング”を参照してください。
ジョイン方法を確認する
アクセスプランのエレメント情報で、ジョイン方法を確認します。
エレメント名の表示内容 | 意味 | 特長 |
---|---|---|
MERGE JOIN | マージジョインを行う | 複数の表をジョインキー(ジョインで使用する列)のデータの昇順に読み込み、ジョインキーの等しい行を結合します。 |
FETCH JOIN | フェッチジョインを行う | 一方の表のレコードごとに、ジョインキーで他方の表へのアクセスを繰り返すため、大量データの検索を行う場合に十分な共用バッファがないと、結合される側の表のI/O効率が低下します。一般的には、大量データのジョインには向きません。反面、少量データのジョインには向いています |
NESTED LOOP JOIN | ネスティドループジョインを行う | ジョインする表のすべてのレコードを組み合わせて結合を行うため、ジョイン結果を求めるのに時間がかかります。 |
ジョイン方法の特長を考慮し、適切なジョイン方法が選択されているかを確認します。ジョイン方法の選択が適切でない場合には、ジョイン方法をチューニングします。
参照
ジョイン方法についての詳細は、“アプリケーション開発ガイド(共通編)”を参照してください。
また、チューニング方法については、“4.2 ジョイン方法のチューニング”、“4.3 ジョイン順のチューニング”を参照してください。
アドバイスを確認する
アクセスプランの“Advice to an SQL statement”で、アドバイスを確認します。
アドバイスは、以下の場合に出力されます。
ASSIST指定が無効となっている場合
SQL文に対するアドバイスがある場合
アドバイスが出力されている場合には、出力された内容に応じて、チューニングを実施します。
チューニング方法については、“4.4 アドバイスに応じたチューニング”を参照してください。
ソート作業域、ワーク作業域を確認する
アクセスプランのセクション情報で、出力先の資源名を確認します。
出力先の資源名として、以下が表示されている場合は、ソート作業域、ワーク作業域が使用されています。
SORTxxxx
WORKxxxx
次に、SQL性能情報の実行エレメント情報に出力される以下の内容を確認します。
実行エレメント名 | 詳細情報 | 出力内容 |
---|---|---|
SORT SCAN/ | file size | ソート処理時の二次記憶使用量 |
run merge | マージした回数 | |
WORK SCAN/ | file size | ソート処理時の二次記憶使用量 |
参照
SQL性能情報については、“SQLTOOLユーザーズガイド”を参照してください。
ソート処理などを行う場合に、二次記憶を大量に使用していることで性能が劣化している可能性があります。また、ソート処理時に、2回以上のマージ処理が行われていることで、メモリが不足し、性能が悪くなっている可能性があります。これらの場合には、ソートサイズ、ワークサイズのチューニングを実施します。
チューニング方法については、“4.5 ソートサイズ、ワークサイズのチューニング”を参照してください。