(1/3)本連載では、Oracleデータベースのパフォーマンス・チューニングの中から、特にSQLのチューニングに注目して、実践レベルの手法を解説する。読者はOracleデータベースのアーキテクチャを理解し、運用管理の実務経験を積んでいることが望ましい。10gで有効な情報も随時紹介していく。前回までの記事でSQLチューニングを行うために必要な基礎知識を説明しました。今回は、チューニング対象とすべきSQLを、どのような観点から、どのように洗い出していくのかを説明していきます。チューニング対象SQLの洗い出し通常、アプリケーションでは多くのSQLが実行されています。SQLチューニングのステップは、実行されている多くのSQLの中から、チューニングの目標に合わせて、対象とするSQLを洗い出すことから始まります。一般的に、表1の条件を1つ以上満たしているSQLは、チューニングによる改善が可能かどうかを検討する対象となります。これらのSQLを洗い出し、チューニングの最終目標を考慮して、対象とするSQLを決定していきます。特定アプリケーションの処理速度の改善が目標の場合には、該当アプリケーション中で処理に時間のかかっているSQLに着目します。システム全体のスループット向上やシステム負荷(CPU、ディスクI/Oなど)の低減を目標とする場合には、多くのリソースを使用しているSQLや実行回数の多いSQLに着目します。チューニング対象として洗い出すSQL対象SQLの洗い出し方法チューニング対象とすべきSQLを洗い出す方法としては、以下の2つがあります。情報を簡単に得ることができるSQLトレースの取得が最も有効です。取得したトレースファイルをフォーマットし、SQLを「処理時間」「読み取りブロック数」「実行回数」などの任意の順番に並べ替えることで、チューニング対象とするSQLを簡単に絞り込むことができます。SQLトレースの取得は比較的負荷が高く、アプリケーションの処理速度に影響を与えることがあります。SQLトレースのオーバーヘッドが心配な場合や、アプリケーションが特定できていない場合には、動的パフォーマンスビュー(V$表)を使用する方法を検討してください。動的パフォーマンスビューでも、各SQLがインスタンス全体でどの程度リソースを使用していたかを確認することができます。表2はそれぞれの方法の主な特徴とメリット/デメリットをまとめたものです。どちらの方法を使用するかは、チューニングの目的、取得する環境に合わせて選択するようにしてください。V$SQLとSQLトレースの使い分け今回は、動的パフォーマンスビューを使用したSQLの洗い出し方法に焦点を絞り、対象SQLの具体的な洗い出しポイントや考慮点について、情報取得用SQLおよび取得結果例も含めて説明していきます。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。