Oracle Database 2日でパフォーマンス・チューニング・ガイド 11g リリース1(11.1) E05744-02 |
|
データベースのアップグレードまたは索引の追加などのシステム変更によって、SQL文の実行計画が変更されることがあり、SQLパフォーマンスに重大な影響を与えることがあります。場合によっては、システム変更によってSQL文が低下し、SQLパフォーマンスが低下することがあります。また、システム変更によってSQLパフォーマンスが向上することもあります。SQLパフォーマンスのシステム変更による、影響を正確に予想できるため、SQL文が低下する場合に事前にシステムをチューニングしたり、SQL文のパフォーマンスが向上する場合のパフォーマンス利得を評価し、測定できます。
SQLパフォーマンス・アナライザによって、次によるSQLワークロードへのシステム変更の影響を予想できます。
この章は次の項で構成されています。
SQLパフォーマンス・アナライザを使用して、あらゆるタイプのシステム変更によるSQLパフォーマンスの影響を分析できます。システム変更の例は次のとおりです。
データベース・アップグレードの実行時には、アップグレード後のシステムのパフォーマンスや、既存の機能への悪影響の有無を予想できない場合があります。たとえば、データベース・アップグレードでは新しいバージョンのオプティマイザがインストールされるため、SQLパフォーマンスに影響を及ぼします。SQLパフォーマンス・アナライザによって、2つのバージョンのOracle DatabaseのSQLパフォーマンスを比較でき、本番システムに影響することなく、データベース・アップグレード後に低下する可能性のあるSQL文を識別し、チューニングできます。
オペレーティング・システムの変更(新しいオペレーティング・システムのインストールなど)、ハードウェア変更(CPUまたはメモリーの追加など)、またはデータベース構成の変更(単一インスタンス・データベース環境からOracle Real Application Clustersへの移行など)によって、SQLパフォーマンスに重大な影響を与えることがあります。SQLパフォーマンス・アナライザによって、これらを変更した場合の、SQLパフォーマンスの向上や低下を判断できます。
索引の変更や新しい索引の作成など、スキーマを変更すると、多くの場合、SQLパフォーマンスに影響を及ぼします。SQLパフォーマンス・アナライザでは、スキーマ変更時のSQLパフォーマンスへの影響を判断できます。
データベース・パラメータの値を変更すると、予期しない結果が生成されることがあります。たとえば、特定の初期化パラメータによってパフォーマンスを向上できますが、このことによって、システム制限が変更されて予期しない結果が生成される場合があります。SQLパフォーマンス・アナライザでは、データベース初期化パラメータ変更時のSQLパフォーマンスへの影響を判断できます。
アドバイザ(ADDM、SQLチューニング・アドバイザ、またはSQLアクセス・アドバイザなど)からの推奨を受け入れると、問題のあるSQL文をチューニングする必要がある場合があります。たとえば、SQLチューニング・アドバイザでは、特定のSQL文にSQLプロファイルの受入れが推奨される場合があります。SQLパフォーマンス・アナライザでは、アドバイザの推奨によるSQL文のチューニングによって得られることのあるパフォーマンス向上を測定でき、これらの推奨を受け入れるかどうかを判断できます。
本番システムに非常に類似したテスト・システム、または本番システム自体でSQLパフォーマンス・アナライザを実行できます。SQLパフォーマンス・アナライザ分析の実行にはリソースが集中するため、本番システムで実行すると、重大なパフォーマンスの低下を招くことがあります。
また、パフォーマンスの影響をテストするためのシステムでのグローバル変更によって、システムの他のユーザーにも影響を与える場合があります。索引の追加や削除などのわずかな変更については許容できますが、データベース・アップグレードなどのシステム規模の変更については、本番システムの使用は推奨されないため、テスト・システムを使用できない場合のみ検討してください。別のテスト・システムを使用できる場合は、SQLパフォーマンス・アナライザをテスト・システムで実行することによって、本番システムに影響を及ぼさずに、変更による影響をテストできます。
SQLパフォーマンス・アナライザによるSQLパフォーマンス影響を正確に分析可能にするには、テスト・システムを本番システムと可能なかぎり類似させる必要があります。このため、テスト・システムでのSQLパフォーマンス・アナライザの実行が推奨され、その方法をここで説明します。本番システムでSQLパフォーマンス・アナライザを実行する場合は、単に適切なテスト・システムを代用します。
SQLパフォーマンス・アナライザによるシステム変更のSQLパフォーマンス影響の分析は、次の手順を含む反復プロセスです。
この項の内容は次のとおりです。
SQLパフォーマンス・アナライザの実行前に、分析し、テスト・システムに移送するSQLワークロードを表す本番システム上のSQL文のセットを取得します。取得したSQL文には、次の情報が含まれている必要があります。
取得したSQL文をSQLチューニング・セットに格納し、SQLパフォーマンス・アナライザの入力ソースとして使用できます。SQLチューニング・セットを使用してSQLワークロードを取得すると、次のことが可能です。
本番システムでSQLチューニング・セットにSQLワークロードを取得した後は、テスト・システムに移送する必要があります。
テスト・データベースの作成方法は複数あります。たとえば、Recovery Manager(RMAN)のDUPLICATE
コマンド、Oracle Data Pump、トランスポータブル表領域などを使用できます。既存のバックアップやアクティブな本番データファイルからテスト・データベースを作成できるため、Recovery Managerを使用することをお薦めします。本番データベースとテスト・データベースは同じホストまたは異なるホストに存在できます。
テスト・データベース環境は、本番システムのデータベース環境と可能なかぎり一致するように構成する必要があります。このようにすることで、SQLパフォーマンス・アナライザは、システム変更によるSQLパフォーマンスへの影響をより正確に予測できるようになります。
SQLワークロードを取得してテスト・システムに移送し、初期データベース環境を適切に構成した後、SQLワークロードを実行して、システム変更前のパフォーマンス・データを構築する必要があります。ワークロードに含まれるSQL文ごとにSQLワークロードを最後まで実行します。実行中、SQLパフォーマンス・アナライザによって実行計画が生成され、ワークロード内のSQL文ごとの実行統計が計算されます。変更前のパフォーマンス・データの構築後、システム変更を実行できます。
システム変更の実行後、SQLワークロードを再び実行して変更後のパフォーマンス・データを構築する必要があります。SQLパフォーマンス・アナライザによって実行計画が生成され、再度、ワークロード内のSQL文ごとの実行統計が計算されます。この結果のパフォーマンス・データの新しいセットは、パフォーマンス・データの変更前のバージョンとの比較に使用できます。
サイズによっては、SQLワークロードの実行にリソースが集中するため、システムに重大なパフォーマンスの影響を及ぼします。SQLワークロードの実行時に、実行統計を収集せずに実行計画のみ生成することを選択できます。これによって実行時間が短縮され、システム・リソースへの影響は小さくなりますが、比較分析の結果が不正確になることがあります。本番システムでSQLパフォーマンス・アナライザを実行する場合は、プライベート・セッションでSQLワークロードを実行し、残りのシステムへの影響を回避することもできます。
SQLパフォーマンス・アナライザにより、SQLチューニング・セット内のSQL文の実行における環境変更の影響を分析できます。「SQLチューニング・セットの管理」で説明されているように、SQLチューニング・セットは、1つ以上のSQL文、実行統計および実行コンテキストを含むデータベース・オブジェクトです。パフォーマンス分析に加えて、SQLパフォーマンス・アナライザにより、SQLアドバイザが起動され、チューニングの推奨事項が提供されます。
SQLパフォーマンス・アナライザにより、次のワークフローを使用してSQLワークロードの比較を実行します。
このワークフローを使用して、データベース初期化パラメータがどのようにSQLパフォーマンスに影響するかを判断します。
このワークフローを使用して、データベース初期化パラメータの変更以外のあらゆるタイプのシステム変更についてSQLパフォーマンスを比較します。
前述のワークフローごとに、SQLパフォーマンス・アナライザ・タスクを作成する必要があります。タスクは、SQL試行の結果のコンテナです。SQL試行により、特定の環境条件下でのSQLチューニング・セットの実行パフォーマンスが取得されます。
「セントラル・アドバイザ」ページが表示されます。
「SQLパフォーマンス・アナライザ」ページが表示されます。既存のSQLパフォーマンス・アナライザ・タスクのリストが表示されます。
パラメータの変更のワークフローにより、単一環境の初期化パラメータが2つの異なる値をとる場合のSQLチューニング・セットに対するパフォーマンスの影響をテストできます。たとえば、ソート領域サイズが1MBから2MBに増加する場合のSQLパフォーマンスを比較できます。
SQLチューニング・セットおよび比較メトリックを選択した後、SQLパフォーマンス・アナライザによりタスクが作成され、元の値に設定された初期化パラメータを使用して試行が実行されます。次にアナライザにより、新しい値に設定されたパラメータを使用して2回目の試行が実行されます。システムで生成されたSQL試行比較レポートによって低下が評価されます。
「パラメータの変更」ページが表示されます。
たとえば、SORT_TIME
と入力します。
たとえば、次のテキストを入力します。Double the value of sort_area_size
複数の比較メトリックを使用して比較分析を実行するには、異なるメトリックを使用してこのプロシージャを繰り返すことにより個別の比較分析を実行します。
確認メッセージが表示されます。
「SQLパフォーマンス・アナライザのタスク」セクションには、このタスクのステータスが表示されます。ステータス・アイコンをリフレッシュするには、「リフレッシュ」をクリックします。タスクの完了後、「最終実行ステータス」アイコンがチェック・マークに変わります。
「SQLパフォーマンス・アナライザのタスク」ページが表示されます。
このページには、次のセクションがあります。
「SQLパフォーマンス・アナライザのタスク結果」ページが表示されます。
ガイド付きワークフローを使用して、SQLワークロードのパフォーマンスに影響する可能性のある様々なシステム変更の前後でSQL文のパフォーマンスを比較できます。
ヒント:
SQLパフォーマンス・アナライザ・タスクの作成前に、「SQLワークロードの取得および移送」で説明されているとおり、パフォーマンス分析で使用するSQLワークロードを、本番システムのSQLチューニング・セットで取得して、これをパフォーマンス分析を実行するテスト・システムに移送します。 |
「ガイド付きワークフロー」ページが表示されます。
このページには、SQLパフォーマンス・アナライザ・タスクで必要な手順が順番にリストされます。各手順は、次の手順を開始する前に表示順に完了する必要があります。
SQLパフォーマンス・アナライザを実行するには、SQLパフォーマンス・アナライザ・タスクを作成する必要があります。このタスクでは、パフォーマンス分析に使用されるワークロードを含むSQLチューニング・セットを選択する必要があります。
SQLパフォーマンス・アナライザ・タスクでは、SQLチューニング・セットは一定であり、各SQL試行時には分離した状態で実行されます。したがって、試行間のパフォーマンスの差異は環境の差異によるものです。
ヒント:
SQLチューニング・セットに基づくSQLパフォーマンス・アナライザ・タスクを作成する前に、「SQLワークロードの取得および移送」で説明されているとおり、パフォーマンス分析で使用するSQLワークロードを、本番システムのSQLチューニング・セットで取得して、テスト・システムに転送します。 |
「SQLパフォーマンス・アナライザのタスクの作成」ページが表示されます。
「ガイド付きワークフロー」ページが表示されます。
この手順のステータス・アイコンがチェック・マークに変わり、次の手順の「実行」アイコンが使用可能になります。
入力ソースとしてSQLチューニング・セットを選択した後、テスト・システムに初期環境を設定します。この手順は、手動で実行する必要があるため、「ガイド付きワークフロー」ページには含まれません。データベース環境の設定の詳細は、「テスト・システムでのデータベース環境の設定」を参照してください。
これらの変更には、初期化パラメータの変更、オプティマイザ統計の収集または設定、索引の作成が含まれます。
テスト・システムで初期環境を適切に構成した後、システム変更の実行前にSQLワークロードを実行して、パフォーマンス・データの変更前のバージョンを構築する必要があります。ワークロードの実行の詳細は、「SQLワークロードの実行」を参照してください。
「SQL試行の作成」ページが表示されます。SQLワークロードを含む選択済のSQLチューニング・セットのサマリーが表示されます。
実際にSQL文をテスト・システムでローカルに実行することで、SQL試行ではSQLチューニング・セット内の各SQL文の実行計画と実行統計が生成されます。
実際にSQL文をパブリック・データベース・リンク上の別のテスト・システムでリモートに実行することで、SQL試行ではSQLチューニング・セット内の各SQL文の実行計画と実行統計が生成されます。
SQL試行によってオプティマイザが起動され、実際にSQL文を実行せずにテスト・システムでローカルに実行計画が作成されます。
SQL試行によってオプティマイザが起動され、実際にSQL文を実行せずにパブリック・データベース・リンク上の別のテスト・システムでリモートに実行計画が作成されます。
SQL試行によってSQLチューニング・セットから試行に実行計画と実行統計が直接コピーされます。
実行が開始されると、「ガイド付きワークフロー」ページが表示されます。
実行が進行中である期間、このタスクのステータス・アイコンが時計に変わります。ステータス・アイコンをリフレッシュするには、「リフレッシュ」をクリックします。選択済のオプションおよびSQLワークロードのサイズによって、実行の完了に長い時間がかかる可能性もあります。実行の完了後、ステータス・アイコンがチェック・マークに変わり、次の手順の「実行」アイコンが使用可能になります。
変更前のSQLパフォーマンス・データを計算した後、テスト・システムでシステム変更を実行します。この手順は、手動で実行する必要があるため、「ガイド付きワークフロー」ページには含まれません。変更のタイプによっては、「テスト・システムでのデータベース環境の設定」の説明に従って、SQLパフォーマンス分析を実行する新しい環境に一致させるためにテスト・システムの環境の再構成が必要な可能性もあります。
SQLパフォーマンス・アナライザにより、あらゆるタイプのシステム変更に対するSQLパフォーマンスの影響を分析できます。たとえば、データベース表の再設計、索引の追加または削除などの変更に関わるアプリケーション・アップグレードをテストする場合です。SQLパフォーマンス・アナライザにより分析できる異なるタイプのシステム変更の例は、「SQLパフォーマンス・アナライザの使用方法」を参照してください。
システム変更を実行した後、SQLワークロードを再度実行して、パフォーマンス・データの変更後のバージョンを構築します。ワークロードの実行の詳細は、「SQLワークロードの実行」を参照してください。
「SQL試行の作成」ページが表示されます。
実際にSQL文をテスト・システムでローカルに実行することで、SQL試行ではSQLチューニング・セット内の各SQL文の実行計画と実行統計が生成されます。
実際にSQL文をパブリック・データベース・リンク上の別のテスト・システムでリモートに実行することで、SQL試行ではSQLチューニング・セット内の各SQL文の実行計画と実行統計が生成されます。
SQL試行によってオプティマイザが起動され、実際にSQL文を実行せずにテスト・システムでローカルに実行計画が作成されます。
SQL試行によってオプティマイザが起動され、実際にSQL文を実行せずにパブリック・データベース・リンク上の別のテスト・システムでリモートに実行計画が作成されます。
これらの各作成方法では、アプリケーション・スキーマとデータがローカル・テスト・システムまたはリモート・テスト・システムにすでに存在している必要があります。
実行が開始されると、「ガイド付きワークフロー」ページが表示されます。
実行が進行中である期間、このタスクのステータス・アイコンが矢印に変わります。ステータス・アイコンをリフレッシュするには、「リフレッシュ」をクリックします。選択済のオプションおよびSQLワークロードのサイズによって、実行の完了に長い時間がかかる可能性もあります。実行の完了後、ステータス・アイコンがチェック・マークに変わり、次の手順の「実行」アイコンが使用可能になります。
変更後のSQLパフォーマンス・データが構築された後、比較分析を実行し、パフォーマンス・データの変更前のバージョンと変更後のバージョンを比較します。
ヒント:
パフォーマンス・データの変更前のバージョンを変更後のバージョンと比較する前に、「変更後のSQLパフォーマンス・データの収集」の説明に従って、パフォーマンス・データの変更後のバージョンを構築します。 |
「SQL試行比較の実行」ページが表示されます。
この例では、SQL_TRIAL_1207494888380
とSQL_TRIAL_1207499034916
の試行が比較対象として選択されています。
統計試行と実行計画のみをテストする試行は比較できないことに注意してください。
使用できる比較メトリックのタイプには、次のものがあります。
複数の比較メトリックを使用して比較分析を実行するには、異なるメトリックを使用してこのプロシージャを繰り返すことにより個別の比較分析を実行します。
比較分析が開始されると、「ガイド付きワークフロー」ページが表示されます。
比較分析が進行中である期間、この手順のステータス・アイコンが矢印に変わります。ステータス・アイコンをリフレッシュするには、「リフレッシュ」をクリックします。変更前および変更後の実行から収集されたパフォーマンス・データの量によって、比較分析の完了に長い時間がかかる可能性もあります。比較分析の完了後、ステータス・アイコンがチェック・マークに変わります。
「SQLパフォーマンス・アナライザのタスク結果」ページが表示されます。
SQLパフォーマンス・アナライザ・タスクが完了すると、結果データがレポートに生成されます。この項では、SQLパフォーマンス・アナライザ・レポートのサンプルを示します。このサンプルのレポートでは、経過時間比較メトリックを使用して変更前および変更後のSQLワークロードの実行を比較します。
「一般情報」セクションでは、SQLパフォーマンス・アナライザにより実行されたワークロードの比較に関する基本情報およびメタデータが含まれます。
ページ上部のサマリーには、次の情報が含まれます。
「SQLチューニング・セット」ページが表示されます。
このページには、SQLのID情報、SQLテキストおよびセット内のすべてのSQL文の関連情報が含まれます。
「SQLパフォーマンス・アナライザのタスク結果」ページが表示されます。
「エラー」表では、任意のSQLワークロードの実行中に発生するすべてのエラーがレポートされます。SQLチューニング・セットでのすべての文の実行に共通する場合は、SQLチューニング・セット・レベルでエラーがレポートされます。また、SQL文または実行計画に固有の場合は、実行レベルで記録されます。
「グローバル統計」セクションにより、SQLワークロードの全体的なパフォーマンスについての統計がレポートされます。このセクションによりSQLワークロードの全体的なパフォーマンスに対するシステム変更の影響がレポートされるため、SQLパフォーマンス・アナライザ分析の非常に重要な部分を占めます。このセクションの情報を使用して、ワークロード・パフォーマンスの傾向を理解し、システム変更によりワークロード・パフォーマンスがどのように影響を受けるかを判断します。
グラフでは、X軸に2つのリプレイが表示され、Y軸に実行経過時間(秒単位)が表示されます。
最も重要な統計は全体的な影響で、パーセントで示されます。全体的な影響は、改善の影響と低下の影響の差になります。「SQLパフォーマンス・アナライザ・レポートの確認: グローバル統計の詳細」の説明に従って、あらゆる影響統計のリンクをクリックして詳細を確認できます。
この例では、改善の影響は44%、低下の影響は-6%であるため、システム変更の全体的な影響は、約37%の改善になります。
グラフのX軸には、システム変更後、改善されたSQL文、低下したSQL文および変更のなかったSQL文の数が表示されます。Y軸にはSQL文の数が表示されます。またグラフには、実行計画のSQL文に対する変更の有無を示します。
グラフにより、SQL文の相対的なパフォーマンスを迅速に比較できます。「SQLパフォーマンス・アナライザ・レポートの確認: グローバル統計の詳細」の説明に従って、グラフ内のいずれかのバーをクリックして詳細を確認できます。
この例では、システム変更後にすべてのSQL文が変化していません。
SQLパフォーマンス・アナライザ・レポートを使用してSQLワークロード比較の詳細な統計を取得できます。詳細グラフにより、レポートの「結果サマリー」セクションに表示されるSQL文のパフォーマンスにドリルダウンできます。このセクションの情報を使用して、特定のSQL文のパフォーマンスが低下した原因を調査します。
|
![]() Copyright © 2007, 2008 Oracle Corporation. All Rights Reserved. |
|