[Queries] ウィンドウは、データベースで最も時間を消費する SQL ステートメントとストアドプロシージャを表示します。SQL 待機時間などの他のメトリックとクエリの重さを比較すると、調整が必要な SQL を特定できます。 

データベースの [Queries] ウィンドウへのアクセス

データベースの [Queries] ウィンドウにアクセスするには

  1. データベースのクエリを表示するには、データベースの名前をクリックします。
  2. [Queries] タブをクリックします。

データベースの [Queries] ウィンドウの機能

データベースエージェントは、実行時間が 1 秒を超えるすべてのクエリを報告します。クエリがサンプリング時間に実行された場合にのみ、実行時間が 1 秒以下のクエリをキャプチャします。

データベースの [Queries] ウィンドウでは、次のことができます。

  • 上位 N 件のクエリを表示します。これらは、完了までに最も多くのデータベース時間を消費したクエリです。 
  • 上位 5、10、100、または 200 のクエリの表示を選択します。
  • 列の名前をクリックすると、そのキーを使用して [Query] リストがソートされます。
  • [Filter by Wait States] をクリックして、[Query] リストをフィルタ処理する待機状態を選択します。フィルタ処理されたリストには、選択した待機状態を引き起こしたクエリのみが表示されます。 

    Couchbase データベースの場合は、[Filter by Phases] をクリックしてフェーズを選択します。これにより、選択したフェーズに基づいてすべてのクエリがフィルタ処理されます。

  • 同じ構文を使用してクエリをグループ化するには、[Group Similar] ボックスをオンにします。「IN」句のパラメータが異なっても同じ構文を共有するクエリはグループ化されます。クエリのグループ化では大文字と小文字は区別されません。クエリグループをダブルクリックすると、そのクエリグループに関する詳細情報が [Group Details] に表示されます。新しいエージェントによってレポートされたクエリのみがグループ化されます。古いエージェントによってレポートされたクエリは、グループ化時に表示されないことがあります。 
  • クエリに表示される場合がある検索バーにテキストを入力して、特定のクエリを検索します。これは、AppDynamics アプリケーション モニタリングの [Slow Database calls] ウィンドウで低速なクエリが見つかった場合に役立ちます。
  • クエリをダブルクリックするか、またはクエリを選択して [View Query Details] をクリックすると、その特定のクエリに関する詳細情報が [Query Details] に表示されます。クエリの詳細が使用できないことを伝えるメッセージが表示された場合は、権限を更新するか、またはクエリの保持期間を延長する必要があることがあります。
  • ページ上部のデータベースコレクタ名の横にある下矢印をクリックして、次のいずれかの方法で別のデータベースコレクタのデータベースクエリを表示できます。リストからデータベースコレクタを選択するか、または次のように入力してデータベースコレクタを検索します。検索バーにテキストを入力し、更新アイコンをクリックすると、その検索条件に一致するデータベースコレクタのみが表示されます。 

  • [Actions] をクリックすると、次のアクションが実行されます。
    • このウィンドウのデータを .csv 形式ファイルでエクスポートします。指定したダウンロードディレクトリに自動的にダウンロードされます。
    • 識別しやすいように、選択したクエリの名前を変更します。クエリ名はクエリ自体に関連付けられていることに注意してください。したがって、クエリの保持期間が満了すると、クエリとクエリ名の両方が非表示になります。

データベースの [Queries] ウィンドウでは、次の情報を確認できます。

  • Query Id:これは、データベースによって内部的にクエリに割り当てられた一意の ID です。 
  • Query:クエリのテキスト、カスタムクエリ名、またはストアドプロシージャの呼び出しの場合はストアドプロシージャの名前です。ユーザがストアドプロシージャ名を表示する権限を持っていない場合は、ストアドプロシージャ名の代わりにストアドプロシージャの定義が表示されます。

SQL Server、Azure、Oracle、PostgreSQL、および DB2 では、メトリック [Number of Executions]、[Average Response Time]、および [Elapsed Time] がクエリインデックスから推測されます。[Group Similar] がオンになっているクエリを表示している場合、クエリの統計情報をキャプチャしているクエリのみが統計情報に反映されます。クエリの統計情報を持たないクエリは、統計値から除外されます。

クエリインデックスを持たない MySQL や MongoDB などのデータベースでは、[Number of Executions] と [Average Response Time] のカラムにデータは表示されません。ただし、MySQL および MongoDB データベースの [Elapsed Time] は、待機状態インデックスを使用して推測できます。SQL Server、Azure、Oracle、PostgreSQL、または DB2 データベースで実行されているクエリのクエリ統計情報が使用できない場合は、待機状態インデックスを使用して [Elapsed Time] を推測することもできます。SQL Server、Azure、Oracle、PostgreSQL または DB2 データベースで実行されるクエリでクエリ統計情報を使用できない場合、[Number of Executions] [Average Response Time] の統計情報はレポートできず、ハイフン(-)でマークされます。これは、選択した時間範囲内でデータベースがこのクエリの統計情報を提供しなかったことを意味します。

  • Elapsed Time:このクエリのすべての実行に費やされた合計時間。SQL Server、Azure、Oracle、PostgreSQL、DB2 などのクエリインデックスをサポートするデータベースでは、[Number of Executions]、[Average Response Time]、および [Elapsed time] などのクエリ統計情報を使用できます。クエリインデックスが使用できないデータベースの場合、経過時間は待機状態のインデックスまたはフェーズから推測されます。
    デフォルトでは、クエリのサンプリング頻度は、1 秒ごとに 1 回です。クエリが 1 秒未満であり、サンプリングインスタンス間の時間内に発生した場合、その経過時間は 0 秒としてレポートされます。
    データベースエージェントの -Ddbagent.sampling.interval= <value> プロパティを追加することで、サンプリング頻度を構成できます。システムプロパティの追加の詳細については、「データベースエージェントの構成プロパティ」を参照してください。
  • Number of Sessions:(Oracle、MSSQL、PostgreSQL、MySQL、Sybase、DB2、MongoDB、および Couchbase でサポート)クエリを実行しているセッションの数です。
  • Number of Executions:(SQL Server、Azure、Oracle、DB2、PostgreSQL でサポート)指定された期間中にクエリが実行された回数です。Greenplum をモニタしている場合、実行回数は 0 と表示されます。 
  • Average Response Time (hh:mm:ss):(SQL Server、Azure、Oracle、DB2、PostgreSQL でサポート)指定された期間中にクエリに応答するために要した平均時間です。
  • Weight (%)クエリによって費やされた合計時間のパーセンテージです

Queries

ほとんどのリソースを消費しているステートメントを特定したら、SQL ステートメントを調整するのに役立つ詳細を掘り下げて調べることができます。詳細クエリを確認するには、SQL ステートメントをクリックし、[View Query Details] をクリックします。「データベースの [Query Details] ウィンドウ」を参照してください。