Performance Insights のトップ SQL タブを使用したクエリの分析
Amazon RDS Performance Insights ダッシュボードでは、実行中のクエリや最近のクエリに関する情報を [Top dimensions] (上位ディメンション) テーブルの[Top SQL] (上位の SQL) タブで見ることができます。この情報を使用して、クエリをチューニングできます。
トピック
[トップ SQL] タブの概要
デフォルトでは、[Top SQL] (上位の SQL) タブはデータベースロードに最も貢献している 25 クエリを表示します。クエリをチューニングするために、クエリテキスト、SQL 統計などの情報を分析できます。また、[トップ SQL] タブに表示する統計を選択することもできます。
SQL テキスト
デフォルトでは、[Top SQL] (上位の SQL) テーブルの各行にはステートメントごとに 500 バイトのテキストが表示されます。
デフォルトの 500 バイト以上の SQL テキストを表示する方法については、「Performance Insights ダッシュボードでより多くの SQL テキストにアクセスする」を参照してください。
SQL ダイジェストは、構造的には類似しているが、異なるリテラル値を含む可能性の高い、複数の実際のクエリの複合体です。ダイジェストは、ハードコードされた値を疑問符に置き換えます。例えば、ダイジェストはSELECT * FROM emp WHERE
lname= ?
のことがあります。このダイジェストには、次の子クエリが含まれます。
SELECT * FROM emp WHERE lname = 'Sanchez' SELECT * FROM emp WHERE lname = 'Olagappan' SELECT * FROM emp WHERE lname = 'Wu'
ダイジェスト内でリテラル SQL ステートメントを表示するには、クエリを選択してからプラス記号 (+) を選択します。以下の例では、選択されたクエリはダイジェストです。
注記
SQL ダイジェストでは、類似した SQL ステートメントがグループ化されますが、機密情報は編集されません。
Performance Insights では、Oracle SQL テキストが [Unknown] (不明) と表示される可能性があります。次のような状況では、テキストはこの状態になります。
-
SYS
以外の Oracle データベースユーザーはアクティブですが、現在 SQL を実行していません。例えば、並列クエリが完了すると、クエリコーディネータはヘルパープロセスがセッション統計を送信するのを待ちます。待機中は、クエリテキストに [Unknown] (不明) と表示されます。 -
Standard Edition 2 の RDS for Oracle インスタンスの場合、リソースマネージャは並列スレッドの数を制限します。この作業を行うバックグラウンドプロセスにより、クエリテキストに [不明] と表示されます。
SQL 統計
SQL 統計は、SQL クエリに関するパフォーマンス関連のメトリックです。例えば、Performance Insights には 1 秒あたりの実行数や 1 秒あたりの処理行数が表示されることがあります。Performance Insights は、最も一般的なクエリのみの統計を収集します。通常、これらは Performance Insights ダッシュボードに負荷別に表示される上位のクエリと一致します。
[トップ SQL] テーブル内の各行は、次の例のように、SQL ステートメントまたはダイジェストに関連する統計を示します。
Performance Insights は、SQL 統計で 0.00
および -
(不明) をレポートする可能性があります。この状況は、以下の条件で発生します。
-
サンプルが 1 つだけ存在する。例えば、Performance Insights は、
pg_stat_statements
ビューからの複数のサンプルに基づいて、RDS PostgreSQL クエリの変更率を計算します。ワークロードが短時間実行されると、Performance Insights ではサンプルが 1 つしか収集されない場合があります。つまり、変更率を計算できません。不明な値はダッシュ (-
) で表されます。 -
2 つのサンプルが同じ値を持っている。Performance Insights は、変更が発生していないため、変更率を計算することができず、変化率を
0.00
と報告します。 -
RDS PostgreSQL ステートメントに有効な識別子がない。PostgreSQL は、構文解析と分析の後にのみ、ステートメントの識別子を作成します。したがって、PostgreSQL の内部インメモリ構造に、識別子なしでステートメントが存在する可能性があります。Performance Insights は内部メモリ内構造を 1 秒に 1 回サンプリングするため、低レイテンシーのクエリは 1 つのサンプルに対してのみ表示されることがあります。このサンプルでクエリ識別子を使用できない場合、Performance Insights はこのステートメントを統計に関連付けることはできません。不明な値はダッシュ (
-
) で表されます。
Amazon RDS エンジンの SQL 統計の説明については、「Performance Insights の SQL 統計」を参照してください。
待機によるロード (AAS)
[トップ SQL] の [待機別の負荷 (AAS)] 列は、上位の各ロード項目に関連付けられているデータベースロードの割合を示しています。この列には、DB 負荷グラフで現在選択されているグループ化に応じて、その項目に対する負荷が反映されます。平均アクティブセッション(AAS)の詳細については、平均アクティブセッション を参照してください。
例えば、DB 負荷グラフを待機状態別にグループ化できます。上位負荷項目のテーブルで SQL クエリを調べます。この場合は、[待機別の DB 負荷] バーは、クエリが貢献している待機状態の量を示すために、サイズ、セグメント、および色で分けられています。また、選択したクエリに影響を与えている待機状態も示されます。
SQL 情報の表示
[トップ SQL] テーブルで、ステートメントを開いてその情報を表示できます。下部のペインに情報が表示されます。
SQL ステートメントに関連付けられているタイプの識別子 (ID) は以下のとおりです。
-
Support SQL ID - SQL ID のハッシュ値。この値は、AWS サポートを利用しているときに SQL ID を参照するためだけのものです。AWS サポートが実際の SQL ID や SQL テキストにアクセスすることはできません。
-
ダイジェスト ID のサポート - Digest ID のハッシュ値。この値は、AWS サポートを利用しているときにダイジェスト ID を参照するためだけのものです。AWSサポートが実際のダイジェスト ID や SQL テキストにアクセスすることはできません。
統計設定を選択する
「設定」 アイコンを選択すると、[トップ SQL] タブに表示される統計を制御できます。
[設定] アイコンを選択すると、[設定] ウィンドウが開きます。次のスクリーンショットは、[Preferences] (環境設定) ウィンドウの例です。
[トップ SQL] タブに表示させたい統計を有効にするには、マウスを使用してウィンドウの下部までスクロールし、[続行] を選択します。
Amazon RDS エンジンの秒単位または呼び出し単位の統計の詳細については、Performance Insights の SQL 統計 の「エンジン固有の SQL 統計」セクションを参照してください。