

# Performance Insights の SQL 統計
<a name="sql-statistics"></a>

*SQL 統計*は、Performance Insights によって収集される SQL クエリに関するパフォーマンス関連のメトリックです。Performance Insights は、クエリが実行中の 1 秒ごとおよび SQL 呼び出しごとに統計を収集します。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 統計をサポートしています。

この機能のリージョン、DB エンジン、およびインスタンスクラスのサポート情報については、「[ Amazon Aurora DB エンジン、リージョン、およびインスタンスクラスでサポートされている Performance Insights 機能](USER_PerfInsights.Overview.Engines.md#USER_PerfInsights.Overview.PIfeatureEngnRegSupport)」を参照してください。

**Topics**
+ [Aurora MySQL のSQL統計](USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.md)
+ [Aurora PostgreSQL での SQL 統計](USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.PostgreSQL.md)

# Aurora MySQL のSQL統計
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL"></a>

Aurora MySQLは、ダイジェストレベルでのみSQL 統計を収集します。ステートメントレベルでは、統計は表示されません。

**Topics**
+ [Aurora MySQL の Digest 統計](#USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.truncation)
+ [Aurora MySQL の秒単位の統計データ](#USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.per-second)
+ [Aurora MySQL の呼び出しごとの統計データ](#USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.truncation.per-call)
+ [Aurora MySQL のプライマリ統計情報](#USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.primary)

## Aurora MySQL の Digest 統計
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.truncation"></a>

Performance Insightsは、`events_statements_summary_by_digest` テーブルから SQL ダイジェスト統計を収集します。`events_statements_summary_by_digest`テーブルは、データベースによって管理されます。

ダイジェストテーブルには削除ポリシーはありません。テーブルがいっぱいになると、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.
```

このような状況では、、Aurora MySQLはSQL クエリを追跡しません。この問題に対処するため、Performance Insights は、次の条件の両方が満たされた場合に、ダイジェストテーブルを自動的に切り捨てます。
+ テーブルがいっぱいの場合、
+ Performance Insights は、Performance Schema を自動的に管理します。

  自動管理の場合、`performance_schema` パラメータを `0` に設定する必要があります。[**Source (ソース)**] を `user` に設定しないでください。Performance Insights がパフォーマンススキーマを自動的に管理していない場合は、[Aurora MySQL における Performance Insights のPerformance Schema の概要](USER_PerfInsights.EnableMySQL.md) を参照してください。

AWS CLI で、[describe-db-pameters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-parameters.html) コマンドを実行し、パラメータ値のソースをチェックします。

## Aurora MySQL の秒単位の統計データ
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.per-second"></a>

次の SQL 統計は、Aurora MySQL DB クラスターで使用できます。


| メトリクス | Unit | 
| --- | --- | 
| db.sql\$1tokenized.stats.count\$1star\$1per\$1sec | 1 秒あたりの呼び出し数 | 
| db.sql\$1tokenized.stats.sum\$1timer\$1wait\$1per\$1sec | 1 秒あたりの平均レイテンシー (ミリ秒) | 
| db.sql\$1tokenized.stats.sum\$1select\$1full\$1join\$1per\$1sec | 1 秒ごとに完全結合を選択 | 
| db.sql\$1tokenized.stats.sum\$1select\$1range\$1check\$1per\$1sec | 1 秒ごとに範囲チェックを選択 | 
| db.sql\$1tokenized.stats.sum\$1select\$1scan\$1per\$1sec | 1 秒ごとにスキャンを選択 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1merge\$1passes\$1per\$1sec | 1 秒ごとにマージパスを並べ替え | 
| db.sql\$1tokenized.stats.sum\$1sort\$1scan\$1per\$1sec | 1 秒あたりの並べ替えスキャン数 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1range\$1per\$1sec | 1 秒ごとの並べ替え範囲 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1rows\$1per\$1sec | 1 秒あたりの行の並べ替え | 
| db.sql\$1tokenized.stats.sum\$1rows\$1affected\$1per\$1sec | 1 秒あたりの影響を受ける行数 | 
| db.sql\$1tokenized.stats.sum\$1rows\$1examined\$1per\$1sec | 1 秒あたりの検査される行数 | 
| db.sql\$1tokenized.stats.sum\$1rows\$1sent\$1per\$1sec | 1 秒あたりに送信される行数 | 
| db.sql\$1tokenized.stats.sum\$1created\$1tmp\$1disk\$1tables\$1per\$1sec | 1 秒ごとに作成されるテンポラリディスクテーブル | 
| db.sql\$1tokenized.stats.sum\$1created\$1tmp\$1tables\$1per\$1sec | 1 秒ごとに作成されるテンポラリテーブル | 
| db.sql\$1tokenized.stats.sum\$1lock\$1time\$1per\$1sec | 1 秒あたりのロック時間 (ミリ秒) | 

## Aurora MySQL の呼び出しごとの統計データ
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.truncation.per-call"></a>

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


| メトリクス | 単位 | 
| --- | --- | 
| db.sql\$1tokenized.stats.sum\$1timer\$1wait\$1per\$1call | 呼び出しごとの平均レイテンシー (ミリ秒)  | 
| db.sql\$1tokenized.stats.sum\$1select\$1full\$1join\$1per\$1call | コールごとに完全結合を選択 | 
| db.sql\$1tokenized.stats.sum\$1select\$1range\$1check\$1per\$1call | コールごとに範囲チェックを選択 | 
| db.sql\$1tokenized.stats.sum\$1select\$1scan\$1per\$1call | コールごとにスキャンを選択 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1merge\$1passes\$1per\$1call | コールごとにマージパスを並べ替え | 
| db.sql\$1tokenized.stats.sum\$1sort\$1scan\$1per\$1call | コールごとに並べ替えスキャン | 
| db.sql\$1tokenized.stats.sum\$1sort\$1range\$1per\$1call | コールごとの並べ替え範囲 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1rows\$1per\$1call | 呼び出しごとの行の並べ替え | 
| db.sql\$1tokenized.stats.sum\$1rows\$1affected\$1per\$1call | コールごとに影響を受ける行数 | 
| db.sql\$1tokenized.stats.sum\$1rows\$1examined\$1per\$1call | コールごとに検査される行数 | 
| db.sql\$1tokenized.stats.sum\$1rows\$1sent\$1per\$1call | コールごとに送信される行数 | 
| db.sql\$1tokenized.stats.sum\$1created\$1tmp\$1disk\$1tables\$1per\$1call | コールごとに作成されたテンポラリディスクテーブル数 | 
| db.sql\$1tokenized.stats.sum\$1created\$1tmp\$1tables\$1per\$1call | コールごとに作成されたテンポラリテーブル数 | 
| db.sql\$1tokenized.stats.sum\$1lock\$1time\$1per\$1call | 呼び出しごとのロック時間 (ミリ秒) | 

## Aurora MySQL のプライマリ統計情報
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.primary"></a>

次の SQL 統計は、Aurora MySQL DB クラスターで使用できます。


| メトリクス | 単位 | 
| --- | --- | 
| db.sql\$1tokenized.stats.count\$1star | 通話 | 
| db.sql\$1tokenized.stats.sum\$1timer\$1wait | 待機時間 (ミリ秒単位) | 
| db.sql\$1tokenized.stats.sum\$1select\$1full\$1join | 完全結合を選択する | 
| db.sql\$1tokenized.stats.sum\$1select\$1range\$1check | 範囲チェックを選択する | 
| db.sql\$1tokenized.stats.sum\$1select\$1scan | スキャンの選択 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1merge\$1passes | マージパスの並べ替え | 
| db.sql\$1tokenized.stats.sum\$1sort\$1scan | スキャンの並べ替え | 
| db.sql\$1tokenized.stats.sum\$1sort\$1range | 並べ替え範囲 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1rows | 行のソート | 
| db.sql\$1tokenized.stats.sum\$1rows\$1affected | 影響を受けた行 | 
| db.sql\$1tokenized.stats.sum\$1rows\$1examined | 検査された行 | 
| db.sql\$1tokenized.stats.sum\$1rows\$1sent | 送信された行 | 
| db.sql\$1tokenized.stats.sum\$1created\$1tmp\$1disk\$1tables | 作成されたテンポラリディスクテーブル数 | 
| db.sql\$1tokenized.stats.sum\$1created\$1tmp\$1tables | 作成されたテンポラリテーブル | 
| db.sql\$1tokenized.stats.sum\$1lock\$1time | ロック時間 (ミリ秒単位) | 

# Aurora PostgreSQL での SQL 統計
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.PostgreSQL"></a>

Performance Insights は、SQL 呼び出しごとおよびクエリが実行中の 1 秒ごとに SQL 統計を収集します。すべての Aurora エンジンは、ダイジェストレベルでのみ統計を収集します。

Aurora PostgreSQL のダイジェストレベルの統計の詳細については、以下を参照してください。

**Topics**
+ [Aurora PostgreSQL でのダイジェスト統計](#USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.PostgreSQL.digest)
+ [Aurora PostgreSQL での秒単位のダイジェスト統計](#USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.PostgreSQL.per-second)
+ [Aurora PostgreSQL のコールごとのダイジェスト統計](#USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.PostgreSQL.per-call)
+ [Aurora PostgreSQL でのプライマリ統計](#USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.PostgreSQL.primary)

## Aurora PostgreSQL でのダイジェスト統計
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.PostgreSQL.digest"></a>

SQL ダイジェストの統計を表示するには、`pg_stat_statements` ライブラリをロードする必要があります。PostgreSQL 10 と互換性のある Aurora PostgreSQL DB クラスターでは、このライブラリはデフォルトでロードされます。PostgreSQL 9.6 と互換性のある Aurora PostgreSQL DB クラスターでは、このライブラリを手動で有効にします。手動で有効にするには、DB インスタンスに関連付けられた DB パラメータグループの `shared_preload_libraries` に `pg_stat_statements` を追加します。次に DB インスタンスを再起動します。詳細については、「[Amazon Aurora のパラメータグループ](USER_WorkingWithParamGroups.md)」を参照してください。

**注記**  
Performance Insights は、切り捨てられない `pg_stat_activity` 内のクエリの統計のみを収集できます。デフォルトでは、PostgreSQL データベースは 1,024 バイトより長い問い合わせを切り捨てます。問い合わせサイズを増やすには、DB インスタンスに関連付けられた DB パラメータグループの `track_activity_query_size` パラメータを変更します。このパラメータを変更した場合は、DB インスタンスの再起動が必要です。

## Aurora PostgreSQL での秒単位のダイジェスト統計
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.PostgreSQL.per-second"></a>

Aurora PostgreSQL DB インスタンスでは、次の SQL ダイジェストの統計を使用できます。


| メトリクス | 単位 | 
| --- | --- | 
| db.sql\$1tokenized.stats.calls\$1per\$1sec | 1 秒あたりの呼び出し数 | 
| db.sql\$1tokenized.stats.rows\$1per\$1sec | 1 秒あたりの行数 | 
| db.sql\$1tokenized.stats.total\$1time\$1per\$1sec | 1 秒あたりの平均アクティブ実行 (AAE) | 
| db.sql\$1tokenized.stats.shared\$1blks\$1hit\$1per\$1sec | 1 秒あたりのブロックヒット数 | 
| db.sql\$1tokenized.stats.shared\$1blks\$1read\$1per\$1sec | 1 秒あたりのブロック読み取り数 | 
| db.sql\$1tokenized.stats.shared\$1blks\$1dirtied\$1per\$1sec | 1 秒あたりのダーティになったブロック数 | 
| db.sql\$1tokenized.stats.shared\$1blks\$1written\$1per\$1sec | 1 秒あたりのブロック書き込み数 | 
| db.sql\$1tokenized.stats.local\$1blks\$1hit\$1per\$1sec | 1 秒あたりのローカルブロックヒット数 | 
| db.sql\$1tokenized.stats.local\$1blks\$1read\$1per\$1sec | 1 秒あたりのローカルブロック読み取り数 | 
| db.sql\$1tokenized.stats.local\$1blks\$1dirtied\$1per\$1sec | 1 秒あたりのダーティになったローカルブロック数 | 
| db.sql\$1tokenized.stats.local\$1blks\$1written\$1per\$1sec | 1 秒あたりのローカルブロック書き込み数 | 
| db.sql\$1tokenized.stats.temp\$1blks\$1written\$1per\$1sec | 1 秒あたりの一時的な書き込み数 | 
| db.sql\$1tokenized.stats.temp\$1blks\$1read\$1per\$1sec | 1 秒あたりの一時的な読み取り数 | 
| db.sql\$1tokenized.stats.blk\$1read\$1time\$1per\$1sec | 1 秒あたりの平均的な同時読み取り数 | 
| db.sql\$1tokenized.stats.blk\$1write\$1time\$1per\$1sec | 1 秒あたりの平均的な同時書き込み数 | 

## Aurora PostgreSQL のコールごとのダイジェスト統計
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.PostgreSQL.per-call"></a>

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


| メトリクス | 単位 | 
| --- | --- | 
| db.sql\$1tokenized.stats.rows\$1per\$1call | 呼び出しごとの行数 | 
| db.sql\$1tokenized.stats.avg\$1latency\$1per\$1call | 呼び出しごとの平均レイテンシー (ミリ秒) | 
| db.sql\$1tokenized.stats.shared\$1blks\$1hit\$1per\$1call | 呼び出しごとのブロックヒット数 | 
| db.sql\$1tokenized.stats.shared\$1blks\$1read\$1per\$1call | 呼び出しごとのブロック読み取り数 | 
| db.sql\$1tokenized.stats.shared\$1blks\$1written\$1per\$1call | 呼び出しごとのブロック書き込み数 | 
| db.sql\$1tokenized.stats.shared\$1blks\$1dirtied\$1per\$1call | 呼び出しあたりのダーティになったブロック数 | 
| db.sql\$1tokenized.stats.local\$1blks\$1hit\$1per\$1call | 呼び出しあたりのローカルブロックヒット数 | 
| db.sql\$1tokenized.stats.local\$1blks\$1read\$1per\$1call | 呼び出しあたりのローカルブロック読み取り数 | 
| db.sql\$1tokenized.stats.local\$1blks\$1dirtied\$1per\$1call | 呼び出しあたりのダーティになったローカルブロック数 | 
| db.sql\$1tokenized.stats.local\$1blks\$1written\$1per\$1call | 呼び出しあたりのローカルブロック書き込み数 | 
| db.sql\$1tokenized.stats.temp\$1blks\$1written\$1per\$1call | 呼び出しあたりのテンポラリブロック書き込み数 | 
| db.sql\$1tokenized.stats.temp\$1blks\$1read\$1per\$1call | 呼び出しあたりのテンポラリブロック読み取り数 | 
| db.sql\$1tokenized.stats.blk\$1read\$1time\$1per\$1call | 呼び出しごとの読み取り時間 (ミリ秒) | 
| db.sql\$1tokenized.stats.blk\$1write\$1time\$1per\$1call | 呼び出しごとの書き込み時間 (ミリ秒) | 

## Aurora PostgreSQL でのプライマリ統計
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.PostgreSQL.primary"></a>

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


| メトリクス | 単位 | 
| --- | --- | 
| db.sql\$1tokenized.stats.calls | 通話  | 
| db.sql\$1tokenized.stats.rows | Rows  | 
| db.sql\$1tokenized.stats.total\$1time | 合計時間 (ミリ秒単位) | 
| db.sql\$1tokenized.stats.shared\$1blks\$1hit | ブロックヒット  | 
| db.sql\$1tokenized.stats.shared\$1blks\$1read | ブロック読み取り数  | 
| db.sql\$1tokenized.stats.shared\$1blks\$1dirtied | ダーティになったブロック数  | 
| db.sql\$1tokenized.stats.shared\$1blks\$1written | ブロック書き込み数  | 
| db.sql\$1tokenized.stats.local\$1blks\$1hit | ローカルブロックヒット数  | 
| db.sql\$1tokenized.stats.local\$1blks\$1read | ロジカルブロックヒット数  | 
| db.sql\$1tokenized.stats.local\$1blks\$1dirtied | ダーティになったローカルブロック | 
| db.sql\$1tokenized.stats.local\$1blks\$1written | ローカルブロック書き込み数  | 
| db.sql\$1tokenized.stats.temp\$1blks\$1written | 一時的な書き込み数  | 
| db.sql\$1tokenized.stats.temp\$1blks\$1read | 一時的な読み取り数  | 
| db.sql\$1tokenized.stats.blk\$1read\$1time | 平均的な同時読み取り数 (ミリ秒単位) | 
| db.sql\$1tokenized.stats.blk\$1write\$1time | 平均的な同時書き込み数 (ミリ秒単位) | 

これらのメトリクスの詳細については、PostgreSQL ドキュメントの「[pg\$1stat\$1statements](https://www.postgresql.org/docs/current/pgstatstatements.html)」を参照してください。