SQL Performance Analyzerを使用したワークロードの変更による影響の評価

目的

このチュートリアルでは、SQL Performance Analyzerを使用して、SQLを事前にチューニングする方法を説明します。

約40分

トピック

このチュートリアルでは、以下について説明します。

概要
前提条件
まとめ

このアイコンの上にカーソルを置くと、すべてのスクリーンショットがロードし、表示されます。 (警告:すべてのスクリーンショットが同時にロードされるため、ご使用のインターネット接続によってはレスポンス・タイムが遅くなる場合があります。)

注:各手順に関連したスクリーンショットのみを表示する場合は、それぞれの手順にあるアイコンの上にカーソルを置いてください。 スクリーンショットをクリックすると、非表示になります。

SQL Performance Analyzerを使用すると、SQL実行計画の構造に影響を与えるすべてのデータベース環境の変更に対して、潜在的なパフォーマンス問題を予測および防止できます。 この変更には以下が含まれますが、これらがすべてではありません。

DBAはSQL Performance Analyzerを使用して、もっとも複雑な環境でも、上述の変更によって引き起こされるSQLパフォーマンスの変更(実行計画、統計情報)を予知できます。 開発のライフ・サイクルを通じて進化するアプリケーションに対し、データベース・アプリケーション開発者は、たとえばスキーマ、データベース・オブジェクト、再作成されたアプリケーションなどの変更をテストして、潜在的なパフォーマンスへの影響を抑えることができます。

また、SQL Performance AnalyzerはSQLパフォーマンス統計情報との比較もできます。

このチュートリアルでは、パッチの適用前後でSQLワークロードのパフォーマンスを比較するタスクを作成します。 アプリケーションへのパッチ適用により生じるあらゆるSQLリグレッションは、SQL Tuning Advisorでチューニングされます。これにより、システムのSQLワークロードに対して実質的な改善が施されたことを確認できます。 最後に、Exadataストレージ・サーバーの導入をシミュレートして、ワークロードに与える可能性のある影響を確認します。

トピック・リストに戻る

このチュートリアルを始める前に、次の手順を完了している必要があります。

1.
2.

最初に、SQL Performance Analyzerが使用する環境をセットアップする必要があります。 以下の手順を実行します。

1.

ターミナル・ウィンドウを開き、SQLファイルが含まれるディレクトリで次のコマンドを入力します。 setup_demo.shスクリプトは適切なデータベース・オブジェクトを作成し、このチュートリアルで使用するデータをロードします。 このスクリプトの実行には数分かかる場合があります。

cd <your working directory>/spa
./setup_demo.sh

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

2.

これで、run_workload_50q.shスクリプトを実行して、先ほどロードしたデータに対するワークロードを生成できるようになりました。 以下のスクリプトを実行します。

./run_workload_50q.sh 2

注: '2'は、スクリプト内で問合せが実行される回数を示しています。 このスクリプトの実行には数分かかる場合があります。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

3.

この他に、create_sts.sqlスクリプトを実行して、先ほど実行したワークロードのSQL Tuning Setを作成する必要があります。 以下のコマンドを実行します。


sqlplus apps/apps
@create_sts

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

トピック・リストに戻る

Guided Workflowでは、SQL Performance Analyzerタスクを作成し、手動で作成した再生トライアルを使用して、いくつかのカスタムの試験を実行します。 ここでは、新しいパッチセットをインストールしたばかりであるため、いずれかのSQLの効率が低下しているかどうかを確認します。 以下の手順を実行します。

1.

ブラウザを起動し、次のURLを入力します。

http://<hostname>:1158/em

ユーザー名にsystemを入力し、パスワードを指定し、「Login」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

2.

Software and Support」タブをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

3.

Real Application Testingの下の「SQL Performance Analyzer」を選択します。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

4.

SQL Performance Analyzer Workflowsの下の「Guided Workflow」を選択します。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

5.

最初に実行するタスクは、SQL Tuning Setに基づいたSQL Performance Analyzerタスクの作成です。 このタスクの「Execute」アイコンをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

6.

NameにOBE1を入力し、SQL Tuning Setで懐中電灯型のアイコンをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

7.

SQL Tuning Setで「HR_WORKLOAD」を選択し、「Select」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

8.

Create」をクリックして、SQL Performance Analyzeタスクを作成します。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

9.

これで初期の環境のSQL Tuning Setを作成および再生でき、変更を加えた後に比較するための基準を作成できます。 Guided Workflowの2番目の手順で、「Execute」アイコンをクリックします。 SQL Tuning Setを再生すると、SQL Tuning Set内のSQLはアプリケーションを再起動することなく、環境に対して1つずつテストを実行します。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

10.

NameにOBE_BEFORE_CHANGEを入力し、「Trial environment established」のチェック・ボックスにチェックを入れて、「Submit」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

11.

ジョブが実行されます。 ジョブが完了するまで、「Refresh」を数回クリックします。 ジョブの実行には1~2分かかる場合があります。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

12.

緑色のチェックが表示されたら、ジョブは完了です。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

13.

次に、変更を実行する必要があります。 このシナリオでは、ここでパッチセットを適用します。 ターミナル・ウィンドウに戻り、make_changes.shスクリプトを実行します。


./make_changes.sh

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

14.

これで、パッチセットを適用したSQL Tuning Setを再生し、比較を実行できるようになりました。 Guided Workflowの3番目の手順で、「Execute」アイコンをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

15.

NameにOBE_AFTER_CHANGEを入力し、「Trial environment established」のチェック・ボックスにチェックを入れて、「Submit」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

16.

ジョブが実行されます。 ジョブが完了するまで、「Refresh」を数回クリックします。 これで、2つの再生ジョブを比較できる状態になりました。 Guided Workflowの4番目の手順で、「Execute」アイコンをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

17.

Trial 1 NameにOBE_BEFORE_CHANGEが選択されており、またTrial 2 NameにOBE_AFTER_CHANGEが選択されていることを確認します。 Comparison Metricで「Buffer Gets」を選択し、「Submit」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

18.

4番目のタスクが完了したら、5番目の手順の「Execute」アイコンをクリックして、比較レポートを表示します。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

19.

パッチセットを適用すると、多くのSQLは改善されますが、ここでは小さなリグレッションが発生しています。 Regressionの棒グラフをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

20.

詳細を検証する必要のあるSQL文が4つあります。 ブレッドクラムをクリックして、前のウィンドウに戻ります。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

トピック・リストに戻る

Guided Workflow時に効率の低下したSQLに対し、SQL Tuning Advisorを実行できます。 以下の手順を実行します。

1.

SQL Performance Analyzer Task Reportページで、「Run SQL Tuning Advisor」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

2.

Tuning Task NameにOBE_TUNE_REGRESSED_SQLと入力し、「OK」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

3.

チューニング・タスクの作成に成功しました。 「Advisor Central」ブレッドクラムをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

4.

ジョブが完了するまで待ちます。 これには、数分かかる場合があります。 ジョブが完了したら、「OBE_TUNE_REGRESSED_SQL」リンクをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

5.

SQL Tuning Result Summaryを見ると、4つのSQL文が調査され、それぞれの文に対して推奨されるSQLプロファイルが見つかったことが分かります。 「Show all results」をクリックして、詳しい調査結果を確認します。

このアイコンの上にカーソルを置くと、イメージが表示されます。

6.

各SQL文に対し、SQLプロファイルが推奨されたことが確認できます。 「Implement All SQL Profiles」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

7.

実装を確定するため、「Yes」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

8.

SQLプロファイルが作成されました。 「Advisor Central」ブレッドクラムをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

トピック・リストに戻る

これで、チューニングされたSQLに対して再生トライアルを比較し、リグレッションがないかどうかを確認できます。 以下の手順を実行します。

1.

SQL Performance Analyzer」リンクを選択します。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

2.

SQL Performance Analyzer Tasksで、「OBE1」リンクを選択します。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

3.

SQL Trialsで、「Create SQL Trial」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

4.

NameにOBE_AFTER_TUNE_REGRESSED_SQLを入力し、「Trial environment established」のチェック・ボックスにチェックを入れて、「Submit」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

5.

SQL再生ジョブの作成に成功しました。 ジョブが完了するまで、「Refresh」をクリックします。 これで、OBE_BEFORE_CHANGEトライアルとOBE_AFTER_TUNE_REGRESSED_SQLトライアルとの比較レポートを実行できるようになりました。 「Run SQL Trial Comparison」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

6.

Trial 1 Nameで「OBE_BEFORE_CHANGE」を選択し、Trial 2 Nameで「OBE_AFTER_TUNE_REGRESSED_SQL」を選択します。 Comparison Metricで「Buffer Gets」を選択し、「Submit」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

7.

比較結果が作成されました。 新しく作成された比較レポートのメガネ・アイコンをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

8.

この時点で何もリグレッションがないことが確認できます。 また、パフォーマンスが87%改善されるため、チューニング済みSQLを使用してパッチセットを適用しても問題ありません。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

トピック・リストに戻る

Oracle Exadataは、データベース・サーバーからストレージへのデータベース処理のオフロード機能をはじめとした、データベース認識型のストレージ・サービスを提供します。また、SQL処理やデータベース・アプリケーションから透過的にこのサービスを提供します。 11g Release 2で導入されたSQL Performance Analyzerの新機能は、既存のワークロードに対してExadataを使用した場合の影響をシミュレートする機能です。 Oracle DatabaseとExadataは緊密に統合されているため、Exadataストレージ・サーバーを物理的に用意しなくても、Exadataの影響をシミュレートすることができます。 Exadataによってワークロードがどのように実行されるかを確認するには、以下の手順を実行します。

1.

SQL Performance Analyzer」リンクを選択します。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

2.

ターミナル・ウィンドウを使用し、DBAユーザーとしてSQL*Plusセッションを開始したら、flush.sqlスクリプトを実行して各種のSGAキャッシュを空にします。

sqlplus / as sysdba
@flush

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

3.

Oracle Enterprise Managerに戻り、「Exadata Simulation」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

4.

Task NameにCOMPARE_EXADATAと入力し、SQL Tuning SetにAPPS.HR_WORKLOADと入力したら、「Submit」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

5.

SQL Performance Analyzerタスクが実行されます。 「Refresh」をクリックしてタスクの進捗を見守るか、またはタスクが完了するまでそのまま待ちます。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

6.

タスクが完了したら、「COMPARE_EXADATA」リンクをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

7.

一方ではExadataシミュレーションが無効化され、もう一方ではExadataの使用がシミュレートされた状態で、2つのSQLトライアルが調査されたことが分かります。 また、2つのSQLトライアルを比較したレポートも提供されています。 新しく作成された比較レポートのメガネ・アイコンをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

8.

比較レポートを確認すると、このワークロードに対してExadataを使用した場合、ストレージとデータベース・インスタンス間で転送されるデータ量が大幅に削減されることが分かります。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

9.

ページ下部までスクロールし、Top 10 SQL Statements Based on Impact on Workloadの最後に表示されたSQL文へのリンクをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

10.

SQL Textラベルの隣のプラス・ボタンをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

11.

これで、完全なSQL文が表示されました。 このSQL文は2つの表を結合し、非常に限られた属性値を持つレコードのみを返しています。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

12.

下方向にスクロールして、Plan Comparisonセクションを表示します。 Exadataを使用しない場合、全表スキャン(TABLE ACCESS FULL)が2回実行されていることが分かります。 非定型の問合せをサポートするための索引は定義されていない場合もあるため、データウェアハウス環境ではこれは非常によくあることです。 Exadataを使用した場合、フィルタ条件がExadataストレージ・サーバーに対して直接適用されていることが分かります(TABLE ACCESS STORAGE FULL)。 これによって、フィルタ条件に合った行のみがデータベース・サーバーに返されるため、この文に対するI/Oインターコネクト・バイトが大幅に少なくなります。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

13.

ページ上部にある「SQL Performance Analyzer Task Report」ブレッドクラムをクリックし、比較レポートに戻ります。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

14.

Exadataを使用すると、このワークロードに対してストレージからデータベース・サーバーへ返される情報量が激減することが確認できました。 これにより、データベース・サーバーはより効率的にワークロードを処理できるようになるため、全体的なパフォーマンスも向上すると考えられます。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

トピック・リストに戻る

次の手順を実行して、環境をクリーンアップします。

1.

ターミナル・ウィンドウに戻り、reset_demo.shスクリプトを実行します。

./reset_demo.sh

 

2.

この時点で、このOBEチュートリアルを再度実行できます。 ただし、その際には、環境のセットアップのトピックにある手順1を実行する必要はありません。 ワークロードを実行する手順2から開始できます。

 

トピック・リストに戻る

このチュートリアルで学習した内容は、次のとおりです。

Guided Workflowの実行
初期の環境を使用したSQL Tuning Setの再生
パッチを適用し、変更された環境を使用したSQL Tuning Setの再生
再生の比較によるリグレッションの有無の確認
SQL Tuning Advisorの実行によるリグレッションの原因であるSQLのチューニング
チューニング済みSQLに対する再生トライアルの比較によるリグレッションが残っていないかどうかの確認
Exadata導入のシミュレーション

トピック・リストに戻る

このアイコンの上にカーソルを置くと、すべてのスクリーンショットが非表示になります。