• 検索結果がありません。

SQL Performance Analyzer

N/A
N/A
Protected

Academic year: 2021

シェア "SQL Performance Analyzer"

Copied!
20
0
0

読み込み中.... (全文を見る)

全文

(1)

SQL Performance Analyzer

Oracle ホワイト・ペーパー

(2)

SQL Performance Analyzer

はじめに ... 3

一般的なシナリオ ... 3

SQL PERFORMANCE ANALYZER の使用... 4

SQL ワークロードの取得 ... 4

SQL Tuning Set ... 5

SQL ワークロードの転送... 6

SQL Pre-Change の実行... 6

変更... 7

SQL Post-Change の実行 ... 7

SQL Performance の比較 ... 7

比較レポート SQL ... 7

繰返し... 8

ユースケースの例 ... 8

データベースのアップグレード ... 9

Parameter Change ... 11

Guided Workflow ... 14

DBMS_SQLPA パッケージ... 15

実際のベスト・プラクティス... 18

SQL ワークロードの取得... 18

テスト・システム ... 18

パフォーマンスの比較 ... 18

リグレッション修正 ... 18

本番のチューニング ... 18

結論 ... 19

(3)

SQL Performance Analyzer

はじめに

データベースの更新や新しい索引の追加など、SQL 文の実行計画に影響を与える 変更により、SQL 文のパフォーマンスが重大な影響を受けることがあります。結 果として、DBA は、変更によって効率の低下した SQL 文の特定と修正に多大な 時間と労力を費やすことになるのです。SQL Performance Analyzer(SPA)は、Oracle Database 11g で導入された Oracle Real Application Testing オプションの主要な機能

で、システム変更によって発生する SQL 文の実行パフォーマンスの低下を予測し、 未然に防ぐことができます。 SPA は、環境の変更前と変更後で SQL 文を分離して実行することで、環境の変更 が SQL の実行計画と実行統計情報に及ぼす影響をより細かく表示します。また、 変更前と変更後に SQL 文の実行結果を比較し、効率の低下した SQL 文だけでな く、ワークロードに対してシステムの変更によってもたらされた利点を説明した レポートも生成します。効率の低下した SQL 文については、適切な実行計画の詳 細と SQL 文を修正するときのリコメンデーションが提示されます。

SPA は、既存の SQL Tuning Set(STS)、SQL Tuning Advisor、および SQL Plan Management の各機能と密接に連携して動作します。非常に大きな(数千にのぼる SQL 文)SQL ワークロードにシステム変更が及ぼす影響を査定する作業は、これ まで手動で行っていたため大変時間のかかる作業でした。SPA を使用すれば、こ うした作業が完全に自動化され、簡素化できます。DBA は、SQL 計画ベースライ ンと SQL Tunung Advisor を使用して、効率の低下した SQL 文をテスト環境で修正 し、最適に機能する実行計画を生成できます。これらの計画は、本番環境にエク スポートされ、SQL 文の以降の実行に使用されます。このように、SPA を使用す ることで、DBA は、これまでより低いコストで、本番環境に対するシステム変更 が実際にプラスの効果をもたらすことを極めて高い信頼度で確認できます。

一般的なシナリオ

SPA は、SQL 実行計画および実行時の統計に影響を及ぼす可能性のある、システ ム変更の影響を分析するために使用できます。一般的なシステム変更には次のよ うな例があります。 • パッチの配置を含むデータベースのアップグレード:データベースを アップグレードすると、オプティマイザの新バージョンがインストール され、SQLパフォーマンスに直接影響を与えます。DBAは、SPAにより変 更前と変更後のOracleデータベースのSQLパフォーマンスを比較できま す。このようにして、DBAは、変更前のデータベースが本番システムに 実際に配置された後で効率が低下するSQL文を事前に特定し、調整できま す。

(4)

• データベース初期化パラメータの変更:データベース・パラメータの値 を変更すると、予測外の結果が生じることがあります。たとえば、特定 の初期化パラメータは、パフォーマンスを改善するために有効化できま すが、この変更により、システム制約が変わる可能性があり、予測外の 結果が生じる場合があります。 • スキーマの変更:索引の変更、新しい索引の作成などの変更は、ほぼ確 実にSQLパフォーマンスに影響を与えます。 • オプティマイザ統計のリフレッシュ:統計が古いまたは欠落しているオ ブジェクトに対する新しい統計を収集すると、オプティマイザのコスト 計算アルゴリズムが大きな影響を受け、生成する実行計画が相当の影響 を受ける可能性があります。DBAは、これらの計画によってシステム・ パフォーマンスが低下することはないと保証する必要があります。 • オペレーティング・システムおよびハードウェアの変更:新しいオペレー ティング・システムのインストール、CPUまたはメモリーの追加、ある いは単一インスタンスのデータベース環境からのOracle Real Application Clustersへの移行といった変更は、SQLパフォーマンスにも重大な影響を 与えます。SPAによってこのような変更を行う際、SQLパフォーマンスが 向上または劣化するかを容易に判定できるようになります。

• チューニングのリコメンデーションの実装:アドバイザ(ADDM、SQL Tuning Advisor、SQL Access Advisorなど)からのリコメンデーションを受 け入れると、実装する前にユーザーがチューニングのリコメンデーショ ンの影響を検証することが必要になる場合があります。たとえば、SQL チューニング・アドバイザが、パフォーマンスを向上させるために、特 定のSQL文のSQLプロファイルを受け入れることを推奨する場合があり ます。しかし、推奨されたプロファイルを受け入れる前に、ユーザーは SPAを起動して、プロファイルの実装によって得られるパフォーマンスの 向上を測定し、推奨を受け入れるかどうかを決定できます。

SQL PERFORMANCE ANALYZER の使用

図 1 に示すように、SPA は、5 つの主要なステップを通して、システム変更が SQL パフォーマンスに与える影響を評価します。

SQL ワークロードの取得

SPA を実行する前に、ユーザーは、分析の対象となる SQL ワークロードを示す本 番システムの SQL 文のセットを取得する必要があります。ワークロードで取得す る SQL 文が多いほど、ワークロードは、アプリケーションまたはシステムの状況 をよく表し、パフォーマンス変更の予測が正確になります。したがって、ユーザー は、行う予定の変更のパフォーマンス分析から最良の結果を得るために、興味の ある期間(月末のクローズ、四半期末のクローズ、日中の OLTP、夜間のバッチ など)に関して、できる限り多くの SQL 文を取得する必要があります。アプリケー ションが発行した SQL 文またはシステム上で実行される SQL 文のすべてを取得 することが理想的です。

(5)

1SQL Performance Analyzerワークフロー

SQL Tuning Set

テストする SQL 文の代表的なセットが取得され、SQL Tuning Set に保存されます。 SQL Tuning Set は、SQL ワークロードの管理に使用されるデータベース・オブジェ クトです。SQL 文のテキスト、SQL 文のコンパイル可能な解析スキーマ、バイン ド値、実行カウント、計画と統計などを含む完全な実行コンテキストとともに、1 つ以上の SQL 文を取得し、永続的に保存するために使用できます。SQL 文の完全 な実行コンテキストにより、設定アプリケーションおよび中間層の環境なしに、 それらを再実行できます。この結果、顧客はハードウェアと時間を節約できます。 カーソル・キャッシュ、Automatic Workload Repository(AWR)、既存の SQL Tuning Set、またはユーザーが提供するカスタムの SQL を含む多様な SQL ソースから、 SQL Tuning Set を投入できます。ユーザーが上記のソースから SQL Tuning Set を 構築できるように、SQL Tuning Set インフラストラクチャが提供するサービスの 中では、増分 SQL ワークロード取得がもっとも重要です。これは、システムの SQL ワークロードすべてを取得できるからです。増分取得は、ある期間に渡ってカー ソル・キャッシュを繰り返しポーリングし、SQL Tuning Set に保存されたワーク ロード・データを更新することにより機能します。システムのワークロードを完 全に取得するために必要な期間中は実行可能です。指定された期間に実行され、 指定された基準(ユーザー、サービス、アクション・モジュールなど)を満たす 文だけが取得されます。増分のカーソル・キャッシュによってシステムにかかる パフォーマンス・オーバーヘッドは、ごくわずかです。内部で行われた広範なテ ストでは、増分取得のオーバーヘッドが 1%未満であることが明らかになりました。

(6)

また、SQL Tuning Set は、データベース間で転送可能です。データベースに取得 された SQL Tuning Set は、エクスポートして、他のデータベースにインポートで きるので、たとえばリモートのパフォーマンス診断およびチューニングのために、 データベース間で SQL ワークロードを転送できるようになります。

SQL ワークロードの転送

SPA は、本番データベースまたはテスト・データベース上で実行できます。テス ト・データベースを使用する場合は、本番システムのデータベース環境にできる 限り一致するようにテスト・データベース環境を構成する必要があります。この ようにして、SPA は、SQL パフォーマンスに対するシステム変更の影響をより正 確に予測できます。 テスト・データベースを作成する方法は多数あります。たとえば、Oracle Recovery Manager(Oracle RMAN)の DUPLICATE コマンド、Oracle Data Pump、またはト ランスポータブル表領域を使用する方法があります。最良の結果を出すには、テ スト・データベースが、可能な限り本番システムに似ている必要があります。 適切なSQLワークロードでSQL Tuning Setを作成した後、SQL Tuning Setを本番シ ステムからエクスポートして、考慮中のシステム変更をテストするテスト・シス テムにインポートします。Oracle Enterprise Manager Grid Control 11gでは、特定の SQL Tuning Setをデータベースからデータベースへコピーするための簡単なイン タフェースを提供しています。SQL Tuning Setは、APIを使用して手動でもコピー できます。詳細は、Oracle Technology Network(OTN)の文書『Optimizing the Optimizer: Essential SQL Tuning Tips and Techniques』1を参照してください。

SQL Pre-Change の実行

SQL ワークロードが取得され、SQL Tuning Set がテスト・システムに転送された 後、システム変更を行う前に SPA を使用し、変更前のパフォーマンス・データを 作成できます。SPA は、SQL Tuning Set に取得された SQL 文を実行し、各文に対 して実行計画と実行の統計を生成します。データベースへの副作用を回避するた めに、問合せおよび DML 文の問合せの部分だけが実行されます。SPA は、最初 の実行順や同時実行性とは無関係に、SQL 文を順番にそれぞれ分離して実行しま す。ただし、SPA が SQL 問合せを実行する順序はカスタマイズできます。たとえ ば、応答時間の点でもっともコストのかかる SQL 文から開始するように設定する ことが可能です。SQL ワークロードのサイズと SQL 文の複雑性により、SQL 文の 実行がリソース集約的になり、時間がかかる場合があります。SPA は、実際に SQL 文を実行せずに、(EXPLAIN PLAN オプションにより)実行計画だけを生成する モードを提供します。この手法は、実行時間およびリソース・システムのリソー ス消費を軽減しますが、比較分析の結果はあまり正確でない場合があります。 1 http://www.oracle.com/technology/products/manageability/database/pdf/ow05/PS_S997_273997_106-1_FIN_v2.pdf (英語)

(7)

変更

変更前のパフォーマンス・データを作成した後、テストするシステム変更を実装 できます。前述したように、この変更は、データベースのアップグレード、新し い索引の作成、初期化パラメータの変更、オプティマイザの統計のリフレッシュ など、SQL 文のパフォーマンスに影響を与える可能性のある、あらゆる種類の変 更になる場合があります。

SQL Post-Change の実行

テスト・システムで計画した変更を実装した後、SPA を再起動して SQL 文を再実 行し、各 SQL 文の実行計画および実行の統計を再生成できます。この実行結果は、 SPA がパフォーマンス・データの変更前のバージョンと比較するために使用する 変更後のパフォーマンス・データを表します。

SQL Performance の比較

SPA は、変更の前後の SQL 文のパフォーマンス・データを比較し、実行計画また は SQL 文の実行の変更を特定するレポートを生成します。パフォーマンスの分析 および比較中に、SPA はパフォーマンスへの変更の影響を計測する際、SQL 文の 実行回数も考慮に入れます。この情報は、SQL ワークロードの取得中に収集され、 各 SQL 文の SQL Tuning Set に保存されます。SPA は、実行回数を使用して、SQL ワークロード内の各 SQL の重要性(重み)を決定します。数秒で終わるが実行回 数の多い SQL 文が、実行時間は長いが 1 回しか実行されない SQL 文と比較して、 システムの性能に及ぼす影響が同等または大きくなることがあるためです。SPA は、こうした要因を考慮に入れて、全体的なパフォーマンスの向上と低下を予測 します。デフォルトにより、SPA は、経過時間を比較のメトリックとして使用し ますが、ユーザーは、ディスク読取り、CPU タイム、bugger gets などの代替のメ トリックを分析のために選択できます。SPA の API を使用する場合は、分析用の 比較メトリックなど、ユーザー定義の機能を指定できます。

比較レポート SQL

このSPAの比較レポート(図 3)では、提示されたシステム変更の後、SQLワーク ロード全体のパフォーマンスが大幅に向上しますが、効率の低下した実行計画も いくつかあります。SPAは全体のパフォーマンス向上および劣化を予測する際、 SQL文の実行回数も考慮に入れます。劣化が起きた場合、SPAは、ユーザーがSQL Tuning AdvisorまたはSQL Plan Baselineを使用して、それらを修正できるようにし ます。SQL Plan Baselineは、Oracle Database 11gに導入された新機能で、プラン・ スタビリティの問題に対処します。詳細は、OTNのテクニカル・ホワイト・ペー パー『SQL Plan Management in Oracle Database 11g』2を参照してください。SQL Plan

Baselineを使用して以前の実行計画に戻り、効率の低下したSQL文の結果を修正し ます。SQL Tuning Advisorを使用して、効率の低下したSQL文を修正すると、その 結果、オプティマイザが、効率の低下したSQL文のパフォーマンスの改善に役立 つ代替の実行計画を選択することがあります。次の項の"データベースのアップグ 2http://www.oracle.com/technology/products/manageability/database/pdf/ow07/spm_whit e_paper_ow07.pdf(英語)

(8)

レード"のユースケースの例で、SPA比較レポートの主要な情報を解釈する方法を 説明します。

繰返し

パフォーマンスの比較により、効率が低下した SQL 文が明らかになると、問題を 修正するために、さらに変更を行うことができます。たとえば、SQL Tuning Advisor を実行するか SQL 計画ベースラインを使用して、効率の低下した SQL 文を修正 できます。次に、SQL Tuning Set を実行して、パフォーマンスを最初の実行と比 較するプロセスを繰り返すことができます。分析の結果に満足するまで、これら のステップを繰り返します。

ユースケースの例

この項では、Oracle Enterprise Manager を使用して、アプリケーションの SQL ワー クロードのパフォーマンスに対する一般的な変更の影響をテストする方法につい て説明します。Oracle Enterprise Manager インタフェースは、次のワークフローを 通して、SQL ワークロードのパフォーマンスで変更の影響に関する評価をユー ザーに説明します。

• Optimizer Upgrade Simulation:データベースのアップグレードをシミュ レートし、SQL ワークロードへの影響を測定するために使用できます。 • Parameter Change:データベースの初期化パラメータの変更がどのように SQL パフォーマンスに影響を与えるかをユーザーが簡単に判定できるよ うにします。 • Guided Workflow:さまざまな変更に対する SQL 実行のパフォーマンスを 比較するために使用できます。

SPAの機能は、Software and SupportタブのReal Application Testingカテゴリの下にあ るOracle Enterprise Managerインタフェースを使用してアクセスできます。図 2 に、 Oracle Enterprise Managerインタフェースで使用できる 3 つのワークフローを示し ます。

(9)

データベースのアップグレード

SPA は、SQL パフォーマンスに対するデータベース・アップグレードの影響を自 動 的 に シ ミ ュ レ ー ト で き ま す 。 デ ー タ ベ ー ス の 初 期 化 パ ラ メ ー タ OPTIMIZER_FEATURES_ENABLE により、データベース・アップグレードのオプ ティマイザ・コンポーネントのシミュレーションが可能になります。すべての SQL 文は、オプティマイザを使用します。これは、Oracle Database の一部で、指定さ れたデータにアクセスするもっとも効率的な方法を判定します。10.2.0.2 および 11.1.0.1 バージョンのオプティマイザを使用する場合、SQL 実行のパフォーマンス の比較に SPA を使用できます。 SQL Tuning Set と比較メトリックを選択すると、2 つのリプレイ・トライアルが作 成されます。最初のトライアルでは、ユーザーが選択した以前のリリースのオプ ティマイザをシミュレートして SQL パフォーマンスが取得され、2 番目のトライ アルでは現在のリリースのオプティマイザが使用されます。システムが生成する リプレイ・トライアル比較レポートは、SQL リグレッションを評価します。パ フォーマンスが劣化した場合、SQL Tuning Advisor を使用して、効率が低下した SQL 文に対する任意の SQL プロファイル・リコメンデーションを実装できます。 図 3 では"Optimizer Upgrade Simulation"のユースケースを説明します。

このワークフローは、パッチセットのアップグレード(10.2.0.2 から 10.2.0.3)や 小規模なアップグレード(10.1.0.3 から 10.2.0.3)など、Oracle Database 10g アップ グレードにも使用できます。この場合、オプティマイザのバージョン 1 は、現在 実行されているデータベース・リリースのバージョンで、オプティマイザのバー ジョン 2 は、シミュレートするバージョンです。11g の SPA 機能を利用するため に、テスト・システムのコピーが 11g にアップグレードされていると仮定します。

(10)

4Optimizer Upgrade Simulationのワークフロー:比較レポート 生成された SPA レポート(図 4)は 3 つのセクションで構成されています。最初 のセクションでは、タスク情報、使用した SQL Tuning Set、リプレイ・トライア ルの名前、および SQL 文がエラーに遭遇したかどうかを示します。2 番目のセク ションは、分析に使用した比較メトリックに基づくグローバルな統計と、ワーク ロードの全体的な向上およびリグレッションの影響から構成されます。ワーク ロードのパフォーマンスは向上していますが、一部の SQL 文は効率が低下してい ます。SQL 文カウントでは、効率の低下した SQL 文がさらに詳しく分類されてい ます。効率の低下した SQL 文を修正するために、2 つのオプション、SQL Plan Baseline および SQL Tuning Advisor を使用できます。SQL Tuning Advisor は、効率 の低下した SQL 文の実行パフォーマンスを改善するために使用でき、SQL Plan Baseline は、既知の実行計画に戻すための支援を行います。任意のオプションを使 用して、効率の低下した SQL 文を修正できます。3 番目のセクションでは、ワー クロードに影響を及ぼす SQL 文のトップ 10 位までを表示し、ドリルダウンして SQL 文の詳細な統計を取得する機能を提供します。 このユースケースでは、SQL Plan Baseline を使用して効率の低下した SQL 文を修 正し、別の SPA トライアルを作成して効率の低下した SQL 文の修正後のトライ アルと元の 10g パフォーマンスを比較しました。図 5 に示すように、リグレッショ ンは存在しないので、本番リリースを安全にアップグレードできます。

(11)

5Optimizer Upgrade Simulation:効率の低下したSQL文をSQL Plan Baselineにより修正

した後の比較レポート

Parameter Change

データベースの 1 つの初期化パラメータを 2 つの値の間で変化させる場合、Parameter Change ワークフローにより、SQL Tuning Set へのパフォーマンスの影響をテスト できます。たとえば、ソート領域のサイズを 1MB から 2MB へ増加する場合に、 SQL パフォーマンスを比較できます。図 6 に、顧客がレガシー・アプリケーショ ンをルールベース・オプティマイザからコストベース・オプティマイザに移行す るユースケースを示します。

SQL Tuning Set と比較メトリックを選択すると、SPA はタスクを作成し、初期化 パラメータ・セットを元の値に設定して、トライアルを実行します。次に、パラ メータ・セットを新しい値に設定して、2 番目のトライアルを実行します。シス テムが生成するリプレイ・トライアル比較レポートは、リグレッションを評価し ます。

(12)

6"Parameter Change"用のOracle Enterprise Managerインタフェース

図 7 に、パラメータ変更のユースケースの SPA 比較レポートを示します。ワーク ロードに対する全体の影響が+24%と表示されていますが、効率の低下した SQL 文がいくつか存在します。SQL Plan Baseline または SQL Tuning Advisor を使用し て、効率の低下した SQL 文を修正できます。説明のために、ここでは後者を選択 します。「Run SQL Tuning Advisor」ボタンをクリックして、ワークロードのパ フォーマンスが向上する可能性のある他の任意の計画を調べることができます。 このケース(図 8 を参照)では、SQL Tuning Advisor が、効率の低下した SQL 文 の 4 つに対して SQL Profiles を推奨しています。効率の低下した SQL 文を調整す るためにそれらを実装できます。SQL Profiles を実装した後、別の SQL リプレイ・ トライアルを作成して、SQL Profiles 実装後のパフォーマンスを評価できます。図 9 には、パフォーマンスのリグレッションは示されていません。そして、全体の 影響が実際に 24%から 33%に増加しています。この 9%の増加は、問合せのパ フォーマンスを改善する SQL Profiles によるものです。DBA は、ワークロードの パフォーマンスが向上することを確認し、本番で SQL Profiles とともにパラメー タ変更を安全に実装できます。

(13)

7Parameter Changeワークフロー:パラメータ変更後の比較レポート

8Parameter Changeワークフロー:効率の低下したSQL文に対するSQL Tuning Advisor

(14)

9Parameter Changeワークフロー:効率の低下したSQL文をSQL Profilesで修正した後 の比較レポート

Guided Workflow

"Guided Workflow"リンクを使用して、SQL ワークロードのパフォーマンスに影響 を与える可能性のある、さまざまなシステム変更前後の SQL 文のパフォーマンス を比較できます。 ここで使用する例では、DBA は、キー索引がいくつか欠落していると考え、本番 データベースで作成しようとします。しかし、そうする前に、作成した索引が他 の SQL 文に悪影響を及ぼさないことを確認したいと考えています。

(15)

10"Guided Workflow"用のOracle Enterprise Managerインタフェース 図 11 には、作成された索引が他の SQL 文に影響を及ぼさず、ワークロードに+8% の全体的な影響があることを示しています。したがって、この変更は、本番シス テムに安全に配置できます。 図11Guided Workflow:スキーマ変更後の比較レポート

DBMS_SQLPA パッケージ

SPA のプライマリ・インタフェースは Oracle Enterprise Manager ですが、SQL パフォー マンスに対するシステム変更の影響をテストする場合、DBMS_SQLSPA パッケー ジへのコマンドライン・インタフェースも使用できます。DBMS_SQLPA は、Oracle 11g に追加された新しいパッケージで、SPA の使用に必要な API を含んでおり、 SQL 文の実行計画の統計の生成、パフォーマンスの相違の比較などの機能を備え ています。

(16)

他のすべての管理性アドバイザと同様に、SPA は共通の Advisory Framework を ベースに構築されています Advisory Framework は、さまざまな管理性機能が生成 する勧告を作成、保存、検索するための共通のインフラストラクチャ・サポート を提供します。したがって、すべての SPA プロシージャは、分析タスクと呼ばれ るアドバイザ・タスク・オブジェクトとともに動作します。SPA の分析タスクは、 実行の入力および結果のコンテナとして使用します。 DBMS_SQLSPAパッケージを使用してSPAと相互に作用する場合、最初のステッ プは、常にcreate_analysis_taskプロシージャをコールして、分析タスクを作成する ことです。このプロシージャは、アドバイザ・タスクを作成し、ユーザーが提供 した入力引数に応じて、対応するパラメータを設定します。 次の例で、このプロシージャのコールを説明します。 dbms.sqlpa.create_analysis_task(sqlset_name => ‘my_sts’, task_name => ‘my_spa_task’, description => ‘test upgrade from 10g to 11g’);

例では、タスクを作成する前に、パフォーマンス分析に使用する SQL ワークロー ドが、'my_sts'と呼ばれる SQL Tuning Set の形式で、システムで使用可能であると 仮定します。作成する分析タスクの名前は'my_spa_task'です。 分析タスクが正常に作成された時点が初期状態となります。次にタスクを 2 回実 行する必要があります。1 回目にはテストの対象である変更を行う前のSQLパ フォーマンス・データを構築し、2 回目には変更後の対応するSQLパフォーマン ス・データを生成します。これには、次のようにexecute_analysis_taskプロシージャ を起動して実行します。 dbms_sqlpa.execute_analysis_task(task_name => ‘my_spa_task’, execution_type => ‘test execute’, execution_name => ‘before_change’); 上記の例は、システム変更前のプロシージャ・コールを示しています。このプロ シージャは、'test execute'にセットされたexecution_type引数を使用して起動されま す。この引数は、実行の統計および実行計画を生成するために、SQLチューニン グ・セットのすべてのSQL文を実行するようSPAに要求します。execution_type引 数を'explain plan'にセットすると、アナライザは実行計画だけを生成します。その 結果として生じる計画と統計は、分析タスク内で"before change"と呼ばれるコンテ ナに保存されます。"before change"は、その特定のタスク実行に付与された名前で す。Oracle Enterprise Managerでは、このタスク実行コンテナをSQLトライアルと 呼びます。

(17)

変更を行った後、同じ引数を使用して同じプロシージャが再びコールされますが、 タスク実行の名前は、次に示すように('after_change'など)異なっています。

dbms_sqlpa.execute_analysis_task(task_name => ‘my_spa_task’, execution_type => ‘test execute’, execution_name => ‘after_change’); タスク実行が始まった後、ユーザーは適切な DBMS_SQLPA プロシージャを使用 して、タスクの取消し、中断、リセットをいつでも行うことができます。また、 ユーザーは、V$ADVISOR_PROGRESS ビューを利用することによって、タスク実 行のステータスを確認できます。このビューには、タスク実行のそれまでの経過 に関する情報が表示されます。この情報には、タスク実行の残り時間、検出事項 の数、SQL Tuning Set で処理された文の数が含まれます。 'after_change'SQL実行データが作成された後、ユーザーはそれをパフォーマンス・ データの'before-change'バージョンと比較できます。これは、次のようにプロシー ジャexecution_analysis_taskの 3 回目のコールを行うことで実行できます。 dbms_sqlpa.execute_analysis_task( task_name => ‘my_spa_task’,

execution_type => ‘compare performance’, execution_name => ‘analysis_results’, execution_params => dbms_advisor.arglist(‘execution_name1’, ‘before_change’, ‘execution_name2’, ‘after_change’, ‘comparison_metric’, ‘buffer_gets’)); 上記のプロシージャ・コールでは、SPAを入力してパフォーマンスを比較するた めに、"execution type"が'compare performance'に設定されています。また、プロシー ジャ・コールは引数execution_paramsを使用して、比較に対して特異的ないくつか のタスク・パラメータを設定します。execution_paramsパラメータは、指定された タスク実行のための(名前と値の)ペアとして指定されます。この例では、パラ メータのexecution_name1 が、'before_change'実行の名前に設定されています。これ は、SQLワークロードのパフォーマンス・データのベースラインを構成します。 パラメータexecution_name2 は、実行'after_change'内に保存されているパフォーマ ンス・データを示し、パラメータ'comparison_metric'は、SQLパフォーマンスの比 較にSPAが使用する必要のあるメトリックを決定する'buffer_gets'を示しています 最後のパラメータに利用可能な値を以下に示します。elapsed_time(デフォルト)、 cpu_time、buffer_gets、disk_reads、direct_writes、optimizer_cost 最後に、分析タスクの実行が完了すると、以下に示すようにreport_analysis_taskプ ロシージャをコールすることで、比較結果を生成できます。

var rep clob; set long 10000

:rep := dbms_sqlpa.report_analysis_task(task_name => ‘my_spa_task’); print :rep

(18)

report_analysis_taskは、デフォルトで最後のタスク実行のテキスト・レポート(タ イプCLOB)を生成します。この例ではパフォーマンス比較に使用されます。レポー トには、SQL文のパフォーマンス向上または効率の低下とは無関係に、パフォー マンスの変更がワークロードにもっとも影響を及ぼしたSQL文のトップ 100 位ま での結果の要約と詳細が含まれています。また、効率の低下したSQL文の分析結 果とチューニングのリコメンデーションも表示しています。

実際のベスト・プラクティス

SQL ワークロードの取得

"増分 STS 取得"メソッドを使用して、代表的な SQL ワークロードを正確に取得し ます。増分 STS 取得によって生じるオーバーヘッドは、ごくわずか(1%未満)で あるため、問題なく本番システムに使用できます。

テスト・システム

SPA 分析は、リソース集約的になる可能性があるので、テスト・システムでの実 行を推奨します。本番システムで実行する場合は、必ずメンテナンス時間枠で実 行し、システムが予備のシステム・リソースを使用して SPA タスク・ロードを処 理できることを確認します。また、テスト・システムを使用する場合は、構成が 本番システムに類似し、オプティマイザ統計が同等であるかどうかを確認するこ とが重要です。

パフォーマンスの比較

信頼できる結果を得るために、経過時間や CPU 時間など、いくつかの異なるメト リックを使用して、変更前後のパフォーマンスを比較することを推奨します。

リグレッション修正

SQL Tuning Advisor と SQL Plan Baseline は、両方とも SQL リグレッションの修正 に使用できます。SQL Tuning Advisor は、代替の実行計画を調べることによって パフォーマンスを改善でき、SQL Plan Baseline の機能は、以前の計画に戻します。

本番のチューニング

チューニングのリコメンデーションを実装するバリデーション・フェーズでの可 視性を制限するために、セッションまたはプライベート・テストの使用を推奨し ます。SQL Profiles は、指定された"sqltune_category"セッション属性を使用して、 プライベート・セッションでテストできます。alter session コマンドを使用して、こ れを実行する方法を以下から参照してください。バリデーション・フェーズで、SQL Profiles が、効率の低下した SQL 文のためになることが明らかになると、"sqltune_ category"を'DEFAULT'に変更できます。これは、すべてのユーザーが実装された SQL Profile を使用できることを意味します。

(19)

結論

このホワイト・ペーパーでは、Oracle Database 11g で導入された SPA の機能を説 明しました。SPA を使用して、ユーザーは SQL 文のパフォーマンスに対するシス テム変更の影響を予測し、潜在的なパフォーマンス低下を修正できます。SPA は、 SQL Tuning Set、SQL Plan Management、SQL Tuning Advisor の機能とうまく統合さ れ、SQL ワークロードのパフォーマンス管理のための包括的なソリューションを ユーザーに提供します。SQL ワークロードの入力として、SQL Tuning Set を使用 し、SQL パフォーマンス・データのさまざまなバージョンの構築と比較を支援し、 潜在的なパフォーマンス上の問題を克服するためのチューニング・リコメンデー ションを生成します。効率の低下した SQL 文を修正するために、ユーザーは SQL Plan Baseline を作成するか、SQL Tuning Advisor が推奨する SQL Profiles を実装で きます。 次の表に、SQL パフォーマンスに影響を与える変更のテスト・プロセスを SPA が どのように簡素化するかについて示します。 Oracle 11g 以前 Oracle 11g アプリケーションの SQL ワークロード を手動で取得する アプリケーションの SQL ワークロードを 自動的に取得する 一部の SQL ワークロード 完全な/全体的な SQL ワークロード SQL を手動で実行して、実行計画および 実行の統計を手動で生成する SQL 実行計画および実行の統計を自動的 に生成する 数か月に及ぶ手動の分析 数分間の自動化された分析 SQL リグレッションの手動修正 SQL リグレッションの自動修正 高リスク、高コスト 低リスク、低コスト

上の表からわかるように、SPA を使用した Oracle 11g と比較すると、Oracle 11g 以 前のリリースでは、DBA はこのような基本的なタスクに非常に多くの労力と時間 を費やしていました。SPA は、アプリケーション変更をテストするために、包括 的でありながら簡単に使用できるソリューションを提供します。エキスパート・ ユーザーだけでなく、経験の浅いユーザーも同様に効果良く使用できます。

(20)

SQL Performance Analyzer 2007 年 11 月

著者:Khaled Yagoub、Prabhaker Gongloor(GP)

Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A. 海外からのお問合せ窓口: 電話:+1.650.506.7000 ファクシミリ:+1.650.506.7200 www.oracle.com

Copyright © 2007, Oracle. All rights reserved.

本文書は情報提供のみを目的として提供されており、ここに記載される内容 は予告なく変更されることがあります。本文書は一切間違いがないことを保 証するものではなく、さらに、口述による明示または法律による黙示を問わ ず、特定の目的に対する商品性もしくは適合性についての黙示的な保証を含 み、いかなる他の保証や条件も提供するものではありません。オラクル社は 本文書に関するいかなる法的責任も明確に否認し、本文書によって直接的ま たは間接的に確立される契約義務はないものとします。本文書はオラクル社 の書面による許可を前もって得ることなく、いかなる目的のためにも、電子 または印刷を含むいかなる形式や手段によっても再作成または送信すること はできません。Oracle は米国 Oracle Corporation およびその子会社、関連会 社の登録商標です。その他の名称はそれぞれの会社の商標です。

図 1 : SQL Performance Analyzer ワークフロー SQL Tuning Set  テストする SQL 文の代表的なセットが取得され、SQL Tuning Set に保存されます。 SQL Tuning Set は、SQL ワークロードの管理に使用されるデータベース・オブジェ クトです。SQL 文のテキスト、SQL 文のコンパイル可能な解析スキーマ、バイン ド値、実行カウント、計画と統計などを含む完全な実行コンテキストとともに、1 つ以上の SQL 文を取得し、永続的に保存するために
図 2 : SPA 用の Oracle Enterprise Manager インタフェース
図 3 : "Optimizer Upgrade Simulation" 用の Oracle Enterprise Manager インタフェース
図 4 : Optimizer Upgrade Simulation のワークフロー:比較レポート 生成された SPA レポート(図 4)は 3 つのセクションで構成されています。最初 のセクションでは、タスク情報、使用した SQL Tuning Set、リプレイ・トライア ルの名前、および SQL 文がエラーに遭遇したかどうかを示します。2 番目のセク ションは、分析に使用した比較メトリックに基づくグローバルな統計と、ワーク ロードの全体的な向上およびリグレッションの影響から構成されます。ワーク ロードの
+6

参照

関連したドキュメント

7IEC で定義されていない出力で 575V 、 50Hz

Microsoft/Windows/SQL Server は、米国 Microsoft Corporation の、米国およびその

SD カードが装置に挿入されている場合に表示され ます。 SD カードを取り出す場合はこの項目を選択 します。「 SD

タラソテラピーを代表する海水入浴療法(バルネオ セラピー)とボディパックを取り入れた、本格的な

テストが成功しなかった場合、ダイアログボックスが表示され、 Alienware Command Center の推奨設定を確認するように求め

・Microsoft® SQL Server® 2019 Client Access License (10 User)ライセンス証書 オープン価格. オープン価格 Microsoft SQL

Power Platform とは Power Apps、Power BI、Power Automate を合わせた製品群です。ビジネス ニーズに応じてさまざまなアプ リをカスタマイズ、拡張、構築することで、Office

各情報システムでは, Oracle , MySQL , PostgreSQL , Microsoft SQL Server , SQLite