Performance Insights ダッシュボードでのモニタリング - Amazon Relational Database Service

Performance Insights ダッシュボードでのモニタリング

パフォーマンスインサイトダッシュボードには、パフォーマンスの問題を分析し、解決するのに役立つ、データベースのパフォーマンス情報が含まれます。ダッシュボードのメインページで、データベース負荷に関する情報を確認できます。特定の待機状態、SQL クエリ、ホスト、またはユーザーを詳細に調べることもできます。

Performance Insights ダッシュボードを開く

パフォーマンスインサイトダッシュボードを表示するには、以下の手順を使用します。

AWS マネジメントコンソールでパフォーマンスインサイトダッシュボードを表示するには

  1. https://console.aws.amazon.com/rds/ にある Amazon RDS コンソールを開きます。

  2. ナビゲーションペインで、[パフォーマンスインサイト] を選択します。

  3. DB インスタンスを選択します。この DB インスタンスにパフォーマンスインサイトダッシュボードが表示されます。

    パフォーマンスインサイトを有効にした DB インスタンスでは、DB インスタンスのリストで [Sessions (セッション)] 項目を選択してダッシュボードにアクセスすることもできます。[Current activity] の [Sessions] 項目には、直近 5 分間におけるアクティブなセッションの平均データベース負荷が表示されます。負荷はバーでグラフィカルに示されます。バーが空の場合、DB インスタンスはアイドル状態です。負荷が増加すると、バーが青色で塗りつぶされます。負荷が DB インスタンスクラスのおける仮想 CPU (vCPU) の数を超えると、バーが赤色になり、ボトルネックとなる可能性があることが示されます。

    
							メトリクスのフィルタリング

    DB インスタンスのダッシュボードを以下のスクリーンショットに示します。デフォルトでは、Performance Insights ダッシュボードには過去 60 分間のデータが表示されます。

    
							メトリクスのフィルタリング
  4. (オプション) 右上のボタンを選択して、別の時間間隔を選択します。たとえば、間隔を 5 時間に変更するには、[5 時間] を選択します。

    
						メトリクスのフィルタリング

    以下のスクリーンショットでは、DB 負荷の間隔は 5 時間です。

    
					メトリクスのフィルタリング
  5. (オプション) データを自動的に更新するには、[自動更新] を有効にします。

    
							メトリクスのフィルタリング

    パフォーマンスインサイトダッシュボードが自動的に新しいデータで更新されます。更新の頻度は、表示されるデータの量によって異なります。

    • 「5 分」は 5 秒ごとに更新されます。

    • 「1 時間」は 1 分ごとに更新されます。

    • 「5 時間」は 1 分ごとに更新されます。

    • 「24 時間」は 5 分ごとに更新されます。

    • 「1 週間」は 1 時間ごとに更新されます。

Performance Insights ダッシュボードのコンポーネント

このダッシュボードは次の 3 つのパートに分かれています。

  1. カウンターメトリクスグラフ – 特定のパフォーマンスカウンターメトリクスのデータを示します。

  2. DB 負荷グラフ – DB 負荷と DB インスタンスの容量を比較して、最大 vCPU ラインで表します。

  3. 上位項目 – DB 負荷の原因となっている上位の待機、SQL、ホスト、ユーザーを示します。

カウンターメトリクスグラフ

カウンターメトリクスグラフはパフォーマンスカウンターのデータを表示します。デフォルトのメトリクスは DB エンジンによって異なります。

  • MySQL と MariaDB – db.SQL.Innodb_rows_read.avg

  • Oracle – db.User.user calls.avg

  • Microsoft SQL Server – db.Databases.Active Transactions(_Total).avg

  • PostgreSQL – db.Transactions.xact_commit.avg


						カウンターメトリクス

[メトリクスの管理] を選択して、パフォーマンスカウンターを変更します。以下のスクリーンショットに示すように、複数の OS メトリクスまたはデータベースメトリクスを選択できます。メトリクスの詳細を表示するには、メトリクス名にカーソルを合わせます。


						メトリクスのフィルタリング

詳細については、「Performance Insights ダッシュボードのカスタマイズ」を参照してください。

Average Active Sessions グラフ

データベース負荷は、データベース負荷と DB インスタンス容量の比較結果が 最大 vCPU の折れ線グラフとして表示されます。デフォルトでは、負荷は待機状態別にグループ化されたアクティブなセッションとして棒グラフに表示されます。


						データベース負荷

待機、SQL、ユーザー、またはホスト別にグループ化されたアクティブなセッションとして負荷を表示するように選択できます。折れ線グラフを選択することもできます。


						メトリクスのフィルタリング

SQL ステートメントなどの DB 負荷項目の詳細を表示するには、項目名にカーソルを合わせます。


						データベース負荷項目の詳細

凡例で選択した期間に対する項目の詳細を表示するには、その項目にカーソルを合わせます。


						DB 負荷の期間の詳細

上位の負荷テーブル

上位の負荷テーブルには、データベース負荷に貢献している上位項目が表示されます。デフォルトでは、コンソールには、データベース負荷の原因となっている上位の SQL クエリが、各ステートメントの関連統計と共に表示されます。代わりに、上位の待機、ホスト、またはユーザーを表示するように選択できます。


						上位の SQL

クエリのコンポーネントを表示するには、クエリを選択してから、+ を選択します。SQL ダイジェストは、構造的には類似しているが、異なるリテラル値を含む可能性の高い、複数の実際のクエリの複合体です。以下のスクリーンショットでは、選択されたクエリはダイジェストです。


						選択された SQL ダイジェスト

[上位の SQL] の [待機別の負荷 (AAS)] 列は、上位の各負荷項目に関連付けられているデータベース負荷の割合を示しています。この列には、DB 負荷グラフで現在選択されているグループ化に応じて、その項目に対する負荷が反映されます。たとえば、DB 負荷グラフを待機状態別にグループ化できます。上位負荷項目のテーブルで SQL クエリを調べます。この場合は、[DB Load by Waits] バーは、クエリが貢献している待機状態の量を示すために、サイズ、セグメント、および色で分けられています。また、選択したクエリに影響を与えている待機状態も示されます。


						待機別の DB 負荷

[上位の SQL] テーブルで、ステートメントを開いてその情報を表示できます。下部のペインに情報が表示されます。


						リテラルクエリが選択された上位の 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] タブに表示される統計を制御できます。


						統計設定

[設定] アイコンを選択すると、[設定] ウィンドウが開きます。


						設定ウィンドウ

[上位の SQL] タブに表示する統計を有効にし、マウスを使用してウィンドウの下部までスクロールして、[続行] を選択します。

Performance Insights ダッシュボードを使用してデータベース負荷を分析する

Average Active Sessions のグラフにボトルネックが表示される場合、負荷の発生源を確認できます。そのためには、Average Active Sessions のグラフ下にある上位負荷項目テーブルを参照してください。SQL クエリやユーザーのような特定の項目を選択すると、その項目をドリルダウンして詳細を表示できます。

待機および上位 SQL クエリによってグループ分けされた DB 負荷は、パフォーマンスインサイトダッシュボードのデフォルトビューです。通常、この組み合わせは、パフォーマンス問題に関する最も正しい情報を提供します。待機でグループ化された DB 負荷は、データベースにリソースまたは同時のボトルネックがあるかどうかを示します。この場合、上位負荷項目のテーブルの SQL タブには、どのクエリがその負荷をかけているかが表示されます。

パフォーマンスの問題を診断するための一般的なワークフローは次のとおりです。

  1. [Average Active Sessions] グラフを確認し、最大 CPU ラインを超えているデータベースロードのインシデントがあるかどうかを確認します。

  2. ある場合は、[Average Active Sessions] グラフを確認して、どの待機状態 (複数) が主に原因であるかを特定します。

  3. 上位の負荷項目テーブルの SQL タブが待機状態に最も影響しているクエリを確認することによって、ロードを引き起こすダイジェストクエリを特定します。これらは [DB Load by Wait] 列で識別できます。

  4. [SQL] タブでこれらのダイジェストクエリの 1 つを選択して展開し、構成されている子クエリを確認します。

たとえば、以下のダッシュボードで、[ログファイルの同期] の待機はほとんどの DB 負荷の主な原因となっています。[LGWR すべてのワーカーグループ] の待機も高くなっています。[上位の SQL] グラフでは、[ログファイルの同期] の待機の発生元として、頻繁な COMMIT ステートメントを示しています。この場合、コミット頻度を下げると、DB 負荷が軽減されます。


					ログファイル同期エラー

クエリの実行の統計を分析する

Amazon RDS Performance Insights では、クエリ実行に関する統計を [Top SQL (上位 SQL)] セクションで確認できます。Performance Insights は、最も一般的なクエリのみの統計を収集します。通常、これらは Performance Insights ダッシュボードに負荷別に表示される上位のクエリと一致します。

MariaDB および MySQL の統計情報

Performance Insightsは、events_statements_summary_by_digest テーブルから SQL ダイジェスト統計を収集します。このテーブルはデータベースによって管理され、削除ポリシーはありません。テーブルがいっぱいになると、新しい SQL クエリは追跡されません。この問題に対処するため、Performance Insights はテーブルがいっぱいになるとテーブルを自動的に切り捨てます。

Performance Insights は、パラメータグループに performance_schema パラメータの値が明示的に設定されていない場合にのみ、テーブルを自動的に切り捨てます。performance_schema パラメータを調べ、ソースの値が user である場合は、値を設定します。Performance Insights でテーブルを自動的に切り捨てる場合は、performance_schema パラメータの値をリセットします。パラメータ値のソースを確認するには、AWS マネジメントコンソール でパラメータを表示するか、AWS CLI の describe-db-parameters コマンドを実行します。テーブルがいっぱいになると、AWS マネジメントコンソール に次のメッセージが表示されます。

Performance Insights is unable to collect SQL Digest statistics on new queries because the table events_statements_summary_by_digest is full. Please truncate events_statements_summary_by_digest table to clear the issue. Check the User Guide for more details.

次の SQL 統計は、MariaDB および MySQL DB インスタンスで使用できます。

メトリクス Unit
db.sql_tokenized.stats.count_star_per_sec 1 秒あたりの呼び出し数
db.sql_tokenized.stats.sum_timer_wait_per_sec 1 秒あたりの平均アクティブ実行 (AAE)
db.sql_tokenized.stats.sum_select_full_join_per_sec 1 秒ごとに完全結合を選択
db.sql_tokenized.stats.sum_select_range_check_per_sec 1 秒ごとに範囲チェックを選択
db.sql_tokenized.stats.sum_select_scan_per_sec 1 秒ごとにスキャンを選択
db.sql_tokenized.stats.sum_sort_merge_passes_per_sec 1 秒ごとにマージパスを並べ替え
db.sql_tokenized.stats.sum_sort_scan_per_sec 1 秒あたりの並べ替えスキャン数
db.sql_tokenized.stats.sum_sort_range_per_sec 1 秒ごとの並べ替え範囲
db.sql_tokenized.stats.sum_sort_rows_per_sec 1 秒あたりの行の並べ替え
db.sql_tokenized.stats.sum_rows_affected_per_sec 1 秒あたりの影響を受ける行数
db.sql_tokenized.stats.sum_rows_examined_per_sec 1 秒あたりの検査される行数
db.sql_tokenized.stats.sum_rows_sent_per_sec 1 秒あたりに送信される行数
db.sql_tokenized.stats.sum_created_tmp_disk_tables_per_sec 1 秒ごとに作成される一時ディスクテーブル
db.sql_tokenized.stats.sum_created_tmp_tables_per_sec 1 秒ごとに作成される一時テーブル
db.sql_tokenized.stats.sum_lock_time_per_sec 1 秒あたりのロック時間(ミリ秒)

以下のメトリクスは、SQL ステートメントの呼び出しごとの統計を提供します。

メトリクス Unit
db.sql_tokenized.stats.sum_timer_wait_per_call 呼び出しごとの平均レイテンシー(ミリ秒)
db.sql_tokenized.stats.sum_select_full_join_per_call コールごとに完全結合を選択
db.sql_tokenized.stats.sum_select_range_check_per_call コールごとに範囲チェックを選択
db.sql_tokenized.stats.sum_select_scan_per_call コールごとにスキャンを選択
db.sql_tokenized.stats.sum_sort_merge_passes_per_call コールごとにマージパスを並べ替え
db.sql_tokenized.stats.sum_sort_scan_per_call コールごとに並べ替えスキャン
db.sql_tokenized.stats.sum_sort_range_per_call コールごとの並べ替え範囲
db.sql_tokenized.stats.sum_sort_rows_per_call 呼び出しごとの行の並べ替え
db.sql_tokenized.stats.sum_rows_affected_per_call コールごとに影響を受ける行数
db.sql_tokenized.stats.sum_rows_examined_per_call コールごとに検査される行数
db.sql_tokenized.stats.sum_rows_sent_per_call コールごとに送信される行数
db.sql_tokenized.stats.sum_created_tmp_disk_tables_per_call コールごとに作成された一時ディスクテーブル数
db.sql_tokenized.stats.sum_created_tmp_tables_per_call コールごとに作成された一時テーブル数
db.sql_tokenized.stats.sum_lock_time_per_call 呼び出しごとのロック時間(ミリ秒)

実行中の SQL ステートメントの MariaDB および MySQL メトリクスの分析

AWS マネジメントコンソール を使用すると、[SQL] タブを選択してクエリを展開することにより、実行中の SQL クエリのメトリクスを表示できます。


							クエリを実行するためのメトリクスの表示。

グラフの右上にある歯車のアイコンを選択して、表示する統計を選択します。

次のスクリーンショットは、MariaDB および MySQL DB インスタンスの設定を示しています。


							MariaDB および MySQL DB インスタンスのクエリを実行するためのメトリクスの設定。

Amazon RDS for Oracle の統計

Oracle DB インスタンスでは、次の SQL 統計を使用できます。

メトリクス Unit
db.sql.stats.executions_per_sec 1 秒あたりの実行回数
db.sql.stats.elapsed_time_per_sec 平均アクティブ実行 (AAE)
db.sql.stats.rows_processed_per_sec 1 秒あたりに処理される行
db.sql.stats.buffer_gets_per_sec 1 秒あたりのバッファ取得数
db.sql.stats.physical_read_requests_per_sec 1 秒あたりの物理的な読み取り数
db.sql.stats.physical_write_requests_per_sec 1 秒あたりの物理的な書き込み数
db.sql.stats.total_sharable_mem_per_sec 1 秒あたりの共有可能なメモリの合計数(バイト単位)
db.sql.stats.cpu_time_per_sec 1 秒あたりの CPU 時間(ミリ秒)

以下のメトリクスは、SQL ステートメントの呼び出しごとの統計を提供します。

メトリクス Unit
db.sql.stats.elapsed_time_per_exec 実行ごとの経過時間(ミリ秒)
db.sql.stats.rows_processed_per_exec 実行ごとに処理される行
db.sql.stats.buffer_gets_per_exec 実行ごとのバッファ取得数
db.sql.stats.physical_read_requests_per_exec 実行ごとの物理的読み取り数
db.sql.stats.physical_write_requests_per_exec 実行ごとの物理的書き込み数
db.sql.stats.total_sharable_mem_per_exec 実行ごとの共有可能なメモリの合計(バイト単位)
db.sql.stats.cpu_time_per_exec 実行ごとの CPU 時間(ミリ秒)

実行中の SQL ステートメントに関する Oracleメトリクスの分析

AWS マネジメントコンソール を使用すると、[SQL] タブを選択してクエリを展開することにより、実行中の SQL クエリのメトリクスを表示できます。


							クエリを実行するためのメトリクスの表示。

グラフの右上にある歯車のアイコンを選択して、表示する統計を選択します。

次のスクリーンショットは、Oracle DB インスタンスの設定を示しています。


							Oracle DB インスタンスのクエリを実行するためのメトリクス。

以下のスクリーンショットは、SQL ステートメントの統計を示しています。


							SQL ステートメントの統計

Performance Insights ダッシュボードでの SQL テキストの表示量を増やす

デフォルトでは、[上位の SQL] テーブルの各行には SQL ステートメントごとに 500 バイトの SQL テキストが表示されます。SQL ステートメントのサイズが 500 バイトを超える場合、この SQL ステートメントをパフォーマンスインサイトダッシュボードで開くことで、ステートメントの表示量を増やすことができます。ダッシュボードには、次のエンジンごとの制限までテキストが表示されます。

  • Amazon RDS for Microsoft SQL Server – 4,096 文字

  • Amazon RDS for MySQL および MariaDB – 1,024 バイト

  • Amazon RDS for Oracle – 1,000 バイト

ダッシュボードに表示されるテキストをコピーするか、[ダウンロード] を選択します。

Amazon RDS for PostgreSQL は、テキストを異なる方法で処理します。Performance Insights ダッシュボードを使用すると、最大 500 バイトまで表示およびダウンロードできます。500 バイトを超える値にアクセスするには、DB インスタンスパラメータ track_activity_query_size を使用してサイズ制限を設定します。最大値は 102,400 バイトです。500 バイトを超えるテキストを表示またはダウンロードするには、Performance Insights CLI または API ではなく AWS マネジメントコンソール を使用します。詳細については、「Amazon RDS for PostgreSQL DB インスタンスの SQL テキスト制限の設定」を参照してください。

パフォーマンスインサイトダッシュボードで SQL テキストの表示量を増やすには

  1. https://console.aws.amazon.com/rds/ にある Amazon RDS コンソールを開きます。

  2. ナビゲーションペインで、[パフォーマンスインサイト] を選択します。

  3. DB インスタンスを選択します。この DB インスタンスにパフォーマンスインサイトダッシュボードが表示されます。

    500 バイトを超える SQL ステートメントは、次のイメージのように表示されます。

    
							テキストサイズが大きい SQL ステートメント
  4. SQL 情報セクションを調べて、SQL テキストをさらに表示します。

    
							SQL 情報セクションに SQL テキストがさらに表示される

    パフォーマンスインサイトダッシュボードは、各 SQL ステートメントの最大 4,096 バイトまでを表示できます。

  5. (オプション) [コピー] を選択して、表示された SQL ステートメントをコピーするか、[ダウンロード] を選択して、DB エンジンに応じた最大サイズの SQL ステートメントをダウンロードします。

    注記

    SQL ステートメントをコピーまたはダウンロードするには、ポップアップブロッカーを無効にします。

Amazon RDS for PostgreSQL DB インスタンスの SQL テキスト制限の設定

Amazon RDS for PostgreSQL DB インスタンスでは、Performance Insights ダッシュボードに表示できる SQL テキストの制限を管理できます。

これを行うには、track_activity_query_size DB インスタンスパラメータを変更します。track_activity_query_size パラメータのデフォルト設定は 1,024 バイトです。

バイト数を増やすことで、パフォーマンスインサイトダッシュボードに表示される SQL テキストサイズを増大できます。パラメータの上限は 102,400 バイトです。track_activity_query_size DB インスタンスパラメータの詳細については、PostgreSQL ドキュメントで「ランタイム統計」を参照してください。

パラメータを変更するには、Amazon RDS for PostgreSQL DB インスタンスに関連付けられているパラメータグループのパラメータ設定を変更します。

Amazon RDS for PostgreSQL DB インスタンスでデフォルトのパラメータグループを使用している場合は、以下のステップを実行します。

  1. 該当する DB エンジンおよび DB エンジンバージョンの新しい DB インスタンスパラメータグループを作成します。

  2. 新しいパラメータグループにパラメータを設定します。

  3. 新しいパラメータグループを DB インスタンスに関連付けます。

DB インスタンスパラメータの設定の詳細については、「DB パラメータグループのパラメータの変更」を参照してください。

DB 負荷グラフのズームイン

パフォーマンスインサイトのユーザーインターフェイスの他の機能を使用して、パフォーマンスデータを分析できます。

クリックアンドドラッグしてズームイン

パフォーマンスインサイトのインターフェイスでは、負荷グラフの小さな部分を選択して、詳細をズームインすることができます。


					ズームイン

負荷グラフの一部を拡大するには、開始時間を選択し、目的の期間の最後までドラッグします。これを行うと、選択した領域が強調表示されます。マウスを離すと、選択した AWS リージョンの負荷グラフがズームインされ、上位項目のテーブルが再計算されます。


					ズームイン