パフォーマンス上の問題が特定の SQL ステートメントのアクセス・パスが原因で発生したかどうかを調べることができます。
このタスクについて
アクセス・パスのパフォーマンスの低下の多くは、SQL ステートメントによって参照されるデータベース・オブジェクトで、適切で正確な現行の統計を使用できるようにすることで解決できます。 Db2保守レベルの変更によってトリガーされる回帰の場合でも、その根本原因は、多くの場合、不十分な統計に関連しています。
プロシージャー
アクセス・パスの問題を調査するには、以下の調査を実行します。
- SQL ステートメントのオブジェクトに関する統計の正確性と完全性を確認します。
多くの場合、統計が不正確であると、アクセス・パスのコスト見積もりが不正確になります。 以下のいずれかのアクションを実行して、他のアクセス・パス比較または調査を完了する前に、SQLステートメントをサポートする統計を確認してください。
- Db2 Administration Foundation や同様の Db2 Tools for z/OS 製品などのツールで利用可能な統計アドバイザー機能を使用して、不足している統計を特定します。 統計アドバイザーでは、以下の方法を使用します。
- 統計アドバイザーを実行します。
- 任意の推奨RUNSTATSユーティリティー・ジョブを実行します。
- 統計アドバイザーを再実行します。 最初の反復で収集された統計の結果として、データ相関およびスキュー統計に関連したRUNSTATSユーティリティー・ジョブがより多く提案される場合があります。
- 新しく提案されたRUNSTATSユーティリティー・ジョブを実行します。
- SQLステートメントのパフォーマンスを再度測定します。
- DSNACCOXストアード・プロシージャーを呼び出して、ヘルス・データベース・オブジェクトを保守するためにREORGまたはRUNSTATSユーティリティーを呼び出すかどうかを検出します。 詳細は、 DSNACCOXストアドプロシージャを参照してください。
- 統計の分析を独自に行います。 以下に例を示します。
- すべてのデータベース・オブジェクトに必要な基本統計の正確性を確認します。 これらの統計では、表や索引などのオブジェクトのサイズと編成が示されます。 これらの統計の例には、以下の列の値が含まれます。
- CARDF
- NPAGESF
- NLEAF
- CLUSTERRATIOF
- DATATREPEATFACTORF
- 特定の SQL ステートメントに関する選択度統計の状況を確認します。 これらには相関統計と分散統計が含まれます。 これらはシナリオ固有であり、特定の SQL ステートメントをサポートし、すべてのデータベース・オブジェクトで定期的に収集されません。 これらの統計の例を以下に示します。
- COLCARDF、LOW2KEY、および HIGH2KEY 列の値
- 単一列および複数列の頻度統計
- 単一列と複数列のヒストグラム統計
- 複数列カーディナリティー統計(KEYCARDおよびCOLGROUP列の値など)
- Db2 がアクセスパスの選択に使用するフィルタリングの推定値と、実行時の実際のフィルタリングを比較します。
見積もりおよび実際のフィルター操作が異なる場合、コスト見積もりが不正確であるため、Db2は、パフォーマンスが悪いアクセス・パスを選択する可能性があります。
- DSN_PREDICAT_TABLE 表の FILTER_FACTOR 列を照会して、述部の見積もりフィルター係数を取得します。
- 実際のフィルター係数を判別するには、限定行の数を判別するための照会を発行します。 結果の値は、表内の行の総数で除算します。
例えば、ステートメントに
STAT_CD='A' という述部が含まれているとします。 限定する行の数を検索する場合は、以下の照会を発行できます。
SELECT COUNT(*)
FROM T1
WHERE STAT_CD='A'
FOR FETCH ONLY WITH UR;
結果のカウント数を表のカーディナリティーで除算した値が実際のフィルター係数です。
見積もりフィルター係数が、実行時の実際のフィルター係数と大きく異なる場合は、以下のアクションを実行して、見積もりフィルター係数を改善できます。
- 頻度統計またはヒストグラム統計、あるいはその両方を収集します。
- 述部を書き直し、頻度とヒストグラムの統計を活用します。
- REOPT(ALWAYS) または REOPT(ONCE) バインド・オプションを使用して、バインド時または準備時にパラメーター・マーカーとホスト変数の値を使用できるようにします。
- 影響を受けているアプリケーションのパフォーマンスの履歴がある場合は、EXPLAIN 出力を使用して、現在および以前のアクセス・パスとコストを比較します。
のアクセス・プラン・グラフ機能や IBM Data Server Manager やその他の関連ツールを使ってSQLアクセスパスを分析し比較することもできます。
- 索引が使用されているかどうか、使用されているマッチング列の数、および索引がドロップされたためにアプリケーションが別のアクセス・パスを使用したかどうかを確認します。
- データへのアクセスに使用される結合演算の数と方式を調べます。
次の作業
アクセスパスの問題を解決できない場合は、 IBM サポートまで、クエリに関する情報と Db2 環境の再作成方法をお送りください。 詳しくは、 アクセスパスのパフォーマンス問題のデータ収集を参照してください。