ヘッダーをスキップ

Oracle Database 2日でパフォーマンス・チューニング・ガイド
11g リリース1(11.1)

E05744-02
目次
目次
索引
索引

戻る 次へ

9 高負荷のSQL文の識別

高負荷SQL文は不均衡な量のシステム・リソースを消費します。これらのSQL文はデータベースのパフォーマンスに多大な影響を与える頻度が高く、パフォーマンスおよびリソース使用量を最適化するためにチューニングする必要があります。データベースが正常にチューニングされた場合でも、非効率的なSQL文がデータベースのパフォーマンスを著しく低下させることがあります。

高負荷SQL文の識別は重要なSQLチューニング・アクティビティで、定期的に実行する必要があります。自動データベース診断モニター(ADDM)により、事前に潜在的な高負荷SQL文を識別することで、このタスクが自動化されます。また、Oracle Enterprise Manager(Enterprise Manager)を使用してさらに調査が必要な高負荷SQL文を識別できます。高負荷SQL文を識別した後、SQLチューニング・アドバイザおよびSQLアクセス・アドバイザを使用してこれらをチューニングできます。

この章では高負荷SQL文の識別方法を説明しています。内容は次のとおりです。

ADDMの検出結果に基づく高負荷SQL文の識別

デフォルトで、ADDMが1時間に1回事前に実行されます。これにより自動ワークロード・リポジトリ(AWR)によって最近1時間に収集された主要統計が分析され、高負荷SQL文を含むあらゆるパフォーマンスの問題を識別します。パフォーマンスの問題が見つかった場合は、それらの問題がADDMの結果として「自動データベース診断モニター(ADDM)」ページに表示されます。

ADDMにより、各ADDM結果と推奨事項が提供されます。高負荷SQL文が識別されると、SQL文でのSQLチューニング・アドバイザの実行などの適切な推奨事項がADDMにより提供されます。第10章「SQL文のチューニング」の説明に従って、チューニングを開始できます。

参照:

 

上位SQLに基づく高負荷SQL文の識別

ADDMはシステム規模のパフォーマンス低下を引き起こす可能性のある高負荷SQL文を自動的に識別します。通常の状況では、高負荷SQL文の手動による識別は不要です。ただし、場合によってはより大まかなレベルでSQL文を監視することがあります。Enterprise Managerの「トップ・アクティビティ」ページの「上位SQL」セクションにより高負荷SQL文を5分間隔で識別できます。

図9-1に、「トップ・アクティビティ」ページの例を示します。

図9-1    「トップ・アクティビティ」ページ


画像の説明

「トップ・アクティビティ」ページへのアクセス手順:
  1. データベースのホームページで、「パフォーマンス」をクリックします。

    「パフォーマンス」ページが表示されます。

  2. 「その他の監視リンク」で、「トップ・アクティビティ」をクリックします。

    「トップ・アクティビティ」ページが表示されます。

    このページには、データベースで実行される上位アクティビティの1時間の時間軸が表示されます。データベース・アクティビティの高い割合を使用するSQL文は、「上位SQL」セクションの下にリストされ、5分間隔で表示されます。

  3. 5分間隔を移動するには、影付きボックスを目的の時間にドラッグ・アンド・ドロップします。

    「上位SQL」セクションに含まれる情報は自動的に更新され、選択した時間間隔を反映します。このページを使用して、パフォーマンスの問題を引き起こす可能性のある高負荷SQL文を識別します。

  4. 1時間より長い期間でSQL文を監視するには、「データの表示」リストから「履歴」を選択します。

    「履歴」ビューで、AWRの保存期間で定義された期間での上位SQL文を表示できます。

この項の内容は次のとおりです。

SQL文の待機クラスごとの表示

「トップ・アクティビティ」ページの「上位SQL」セクションに表示されるSQL文は、「トップ・アクティビティ」グラフの凡例に従って対応する色に基づいて様々な待機クラスに分類されます。

特定の待機クラスのSQL文を表示するには、待機クラスのグラフにあるカラー・ブロックをクリックするか、または凡例にある対応する待機クラスをクリックします。選択した待機クラスの「実行中のアクティブ・セッション: 使用中のCPU」ページが表示され、「上位SQL」セクションが自動的に更新されてその待機クラスのSQL文のみが表示されます。

図9-2の例は、「使用中のCPU」待機クラスの「実行中のアクティブ・セッション: 使用中のCPU」ページを示しています。多くのCPU時間を消費したSQL文のみが「実行中の上位SQL」セクションに表示されます。

図9-2    SQL文の待機クラスごとの表示


画像の説明

参照:

 

SQL文の詳細の表示

「トップ・アクティビティ」ページの「上位SQL」セクションには、選択した5分間隔内で実行されたSQL文がリソース使用量に基づいて降順で表示されます。この表の上部にあるSQL文は、この期間に最もリソースが集中したSQL文を表し、次に2番目に集中したSQL文が続きます。

図9-1の例では、SQL_IDが05b6pvb81dg8bのSQL文によってデータベース・アクティビティの89.7%が使用されているため、調査が必要です。

SQL文の詳細の表示手順:
  1. データベースのホームページで、「パフォーマンス」をクリックします。

    「パフォーマンス」ページが表示されます。

  2. 「その他の監視リンク」で、「トップ・アクティビティ」をクリックします。

    「トップ・アクティビティ」ページが表示されます。

  3. 「上位SQL」セクションで、SQL文の「SQL ID」リンクをクリックします。

    選択したSQL文に対して「SQLの詳細」ページが表示されます。

  4. より長い期間のSQLの詳細を表示するには、「データの表示」リストから「履歴」を選択します。

    AWRの保存期間で定義された期間に応じて過去のSQLの詳細を表示できます。

  5. SQL文に対するSQLテキストを確認します。

    「テキスト」セクションには選択したSQL文に対するSQLテキストが含まれます。


    画像の説明

    SQL文の一部が表示されると、プラス記号(+)のアイコンが「テキスト」ヘッダーの横に表示されます。SQL文全体のテキストを表示するには、プラス記号(+)のアイコンをクリックします。

  6. SQL文に複数の計画がある場合は、「計画ハッシュ値」リストから「すべて」を選択し、すべての計画のSQLの詳細を表示します。

    また、特定の計画を選択して、その計画のみのSQLの詳細を表示することもできます。


    画像の説明

  7. 次の項の説明に従って、「SQLの詳細」ページからサブページにアクセスし、SQL文に関するより多くの情報を収集します。

  8. SQL文が高負荷SQL文である場合は、第10章「SQL文のチューニング」の説明に従って、チューニングします。

SQL統計の表示

「SQLの詳細」ページの「統計」サブページには、SQL文の統計情報が表示されます。

SQL文の統計の表示手順:
  1. 「SQLの詳細」ページで、「詳細」の下で、「統計」をクリックします。

    「統計」サブページが表示されます。


    画像の説明

  2. 次の項の説明に従って、SQL文の統計を表示します。

SQL統計のサマリー

「サマリー」セクションにはグラフのSQL統計およびSQLアクティビティが表示されます。

「実行時間」ビューで、「アクティブ・セッション」グラフに過去1時間にSQL文を実行したアクティブ・セッションの平均数が表示されます。SQL文に複数の計画があり、「計画ハッシュ値」リストで「すべて」が選択されている場合、グラフには異なる色で各計画が表示されます。これにより、計画が変更されたかどうか、またこれがパフォーマンスの低下の原因かどうかを簡単に見分けられます。また、特定の計画を選択してその計画のみを表示することもできます。

「履歴」ビューでは、グラフに異なるディメンションで実行統計が表示されます。実行統計を表示するには、「表示」リストから該当するディメンションを選択します。

このビューにより異なるディメンションを使用したSQL文のレスポンス時間の追跡が可能になり、またSQL文のパフォーマンスの低下が選択されたディメンションに起因しているかどうかを決定できます。

特定の期間に対するSQL文の統計を表示するには、グラフの下のスナップショット・アイコンをクリックします。矢印を使用してスクロールすると、目的のスナップショットの位置に移動できます。

一般的なSQL統計

「一般」セクションでは次の情報がリストされ、SQL文の起点を識別できます。

待機ごとのアクティビティの統計および時間ごとのアクティビティの統計

「待機ごとのアクティビティ」セクションおよび「時間ごとのアクティビティ」セクションでは、SQL文がアクティビティ時間の大部分を使用した場所を識別できます。「待機ごとのアクティビティ」セクションでは、CPUおよび残っている待機によって消費される経過時間の量がグラフィカルに表示されます。「時間ごとのアクティビティ」セクションでは、経過時間の合計がCPU時間および待機時間に毎秒分割されます。

経過時間ブレークダウンの統計

「経過時間ブレークダウン」セクションでは、SQL文自体が時間を大量に消費しているかどうか、または発信元プログラムやアプリケーションがPL/SQLまたはJavaエンジンを使用した時間のために経過時間の合計が長くなったのかどうかを識別できます。PL/SQL時間またはJava時間が経過時間の大部分を占める場合、SQLのチューニングでは大きな改善はできない可能性があります。かわりに、アプリケーションを調査して、PL/SQL時間またはJava時間を削減できるかどうかを判別する必要があります。

共有カーソル統計および実行統計

「共有カーソル統計」セクションおよび「実行統計」セクションではSQL実行プロセスの様々なステージの効率性に関連する情報を提供します。

その他のSQL統計

「その他統計」セクションでは、平均の永続メモリーおよびランタイム・メモリーなど、SQL文の詳細が表示されます。

セッション・アクティビティの表示

SQL文のセッション・アクティビティを表示するには、「詳細」セクションで、「アクティビティ」をクリックします。

「アクティビティ」サブページにはセッション・アクティビティがグラフィカルに表示されています。


画像の説明

「アクティビティ」サブページにはSQL文を実行する各種セッションの詳細が表示されます。「アクティブ・セッション」グラフには、一定期間のアクティブ・セッション数の平均が表示されます。影付きのボックスをドラッグして5分間隔を選択できます。「選択した5分間隔の詳細」セクションには、選択した5分間隔の間にSQL文が実行されたセッションがリストされています。「アクティビティ%」列にある複数色の棒は、SQL文の実行中に各セッションに分割されたデータベース時間の割当てを表しています。特定のセッションの詳細を表示するには、表示するセッションの「SID」列のリンクをクリックして「セッションの詳細」ページを表示します。

参照:

 

SQL実行計画の表示

SQL文の実行計画を表示するには、「詳細」セクションで、「プラン」をクリックします。SQL文の実行計画は、文を実行するためにOracle Databaseで行われる操作の順序です。

「プラン」サブページに、SQL文に対する実行計画がグラフ・ビューおよび表ビューで表示されます。

グラフ・ビューでSQL実行を表示するには、「グラフ」をクリックします。


画像の説明

グラフ・ビューでは、グラフにある操作を選択して実行計画に表示される操作の詳細を表示できます。選択した操作の詳細は「選択の詳細」の下に表示されます。選択した操作が表などの特定のデータベース・オブジェクト上にある場合、「オブジェクト」リンクをクリックするとデータベース・オブジェクトのより詳細な情報を表示できます。

表ビューでSQL実行を表示するには、「表」をクリックします。


画像の説明

Oracle Databaseではリライト付きとリライトなしの問合せのコストを比較し、費用の少ない方を選択します。リライトが必要な場合、クエリー・リライトおよびそのコスト・ベネフィットが「リライトの説明」セクションに表示されます。

参照:

 

SQLチューニング情報の表示

SQL文のチューニングの情報を表示するには、「詳細」セクションで、「チューニング情報」をクリックします。

「チューニング情報」サブページには、SQL文に対するSQLチューニング・アドバイザが推奨するSQLチューニング・タスクおよびSQLプロファイルに関する情報が含まれます。

「SQLプロファイルとアウトライン」セクションに、SQL文に関連付けられたSQLプロファイルおよびアウトラインが表示されます。SQLプロファイルにはSQL文の追加統計が含まれ、アウトラインには問合せオプティマイザに対するSQL文のヒントが含まれます。問合せオプティマイザはこの両方を使用して、SQL文に対するより適切な実行計画を生成します。

「SQLチューニング履歴」セクションにSQLチューニング・アドバイザまたはSQLアクセス・アドバイザのタスクの履歴が表示されます。

「このSQLの履歴期間中のADDM結果」セクションに、SQL文に関連付けられたADDM結果の発生数が表示されます。


画像の説明

参照:

 


戻る 次へ
Oracle
Copyright © 2007, 2008 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引