

# Performance Insights 的 SQL 统计数据
<a name="sql-statistics"></a>

*SQL 统计数据*是由 Performance Insights 收集的关于 SQL 查询的性能相关指标。Performance Insights 收集查询运行的每一秒的统计数据，以及每次 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 统计数据。

有关此功能的区域、数据库引擎和实例类支持信息，请参阅[支持性能详情功能的 Amazon Aurora 数据库引擎、区域和实例类](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 的摘要统计数据](#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 的摘要统计数据
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.truncation"></a>

性能详情从 `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 Schema。

  对于自动管理，`performance_schema` 参数必须设置为 `0`，**Source (源)** 不应设置为 `user`。如果性能详情没有自动管理 Performance Schema，请参阅 [Aurora MySQL 上性能详情的性能架构概述](USER_PerfInsights.EnableMySQL.md)。

在 AWS CLI 中，检查参数值的来源，方法是运行 [describe-db-parameters](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 数据库集群。


| 指标 | Unit | 
| --- | --- | 
| db.sql\$1tokenized.stats.count\$1star\$1per\$1sec | 每秒调用数 | 
| db.sql\$1tokenized.stats.sum\$1timer\$1wait\$1per\$1sec | 每秒平均延迟（以毫秒为单位） | 
| db.sql\$1tokenized.stats.sum\$1select\$1full\$1join\$1per\$1sec | 选择每秒完全联接数 | 
| db.sql\$1tokenized.stats.sum\$1select\$1range\$1check\$1per\$1sec | 选择每秒范围检查数 | 
| db.sql\$1tokenized.stats.sum\$1select\$1scan\$1per\$1sec | 选择每秒扫描数 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1merge\$1passes\$1per\$1sec | 对每秒合并传递数进行排序 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1scan\$1per\$1sec | 对每秒对扫描数进行排序 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1range\$1per\$1sec | 对每秒范围数进行排序 | 
| db.sql\$1tokenized.stats.sum\$1sort\$1rows\$1per\$1sec | 对每秒行数进行排序 | 
| db.sql\$1tokenized.stats.sum\$1rows\$1affected\$1per\$1sec | 每秒受影响的行数 | 
| db.sql\$1tokenized.stats.sum\$1rows\$1examined\$1per\$1sec | 每秒检查的行数 | 
| db.sql\$1tokenized.stats.sum\$1rows\$1sent\$1per\$1sec | 每秒发送的行数 | 
| db.sql\$1tokenized.stats.sum\$1created\$1tmp\$1disk\$1tables\$1per\$1sec | 每秒创建的临时磁盘表数 | 
| db.sql\$1tokenized.stats.sum\$1created\$1tmp\$1tables\$1per\$1sec | 每秒创建的临时表数 | 
| db.sql\$1tokenized.stats.sum\$1lock\$1time\$1per\$1sec | 每秒锁定时间（以毫秒为单位） | 

## 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.sql\$1tokenized.stats.count\$1star | Calls | 
| 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>

对于每个 SQL 调用和查询运行的每一秒，性能详情都会收集 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 数据库集群，默认为加载此库。对于与 PostgreSQL 9.6 兼容的 Aurora PostgreSQL 数据库集群，您可以手动启用此库。要手动启用该库，请在与数据库实例关联的数据库参数组中的 `pg_stat_statements` 中添加 `shared_preload_libraries`。然后重启数据库实例。有关更多信息，请参阅“[Amazon Aurora 的参数组](USER_WorkingWithParamGroups.md)”。

**注意**  
性能详情只能收集 `pg_stat_activity` 中未被截断的查询的统计数据。默认情况下，PostgreSQL 数据库会截断长度超过 1,024 字节的查询。要增加查询大小，请更改与数据库实例关联的数据库参数组中的 `track_activity_query_size` 参数。更改此参数后，需要重新启动数据库实例。

## Aurora PostgreSQL 的每秒摘要统计数据
<a name="USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.PostgreSQL.per-second"></a>

以下 SQL 摘要统计数据可用于 Aurora PostgreSQL 数据库实例。


| 指标 | 单位 | 
| --- | --- | 
| db.sql\$1tokenized.stats.calls\$1per\$1sec | 每秒调用数 | 
| db.sql\$1tokenized.stats.rows\$1per\$1sec | 每秒行数 | 
| db.sql\$1tokenized.stats.total\$1time\$1per\$1sec | 每秒平均活动执行次数 (AAE) | 
| db.sql\$1tokenized.stats.shared\$1blks\$1hit\$1per\$1sec | 每秒块命中次数 | 
| db.sql\$1tokenized.stats.shared\$1blks\$1read\$1per\$1sec | 每秒块读取次数 | 
| db.sql\$1tokenized.stats.shared\$1blks\$1dirtied\$1per\$1sec | 每秒损坏的块数 | 
| db.sql\$1tokenized.stats.shared\$1blks\$1written\$1per\$1sec | 每秒块写入次数 | 
| db.sql\$1tokenized.stats.local\$1blks\$1hit\$1per\$1sec | 每秒本地块命中次数 | 
| db.sql\$1tokenized.stats.local\$1blks\$1read\$1per\$1sec | 每秒本地块读取次数 | 
| db.sql\$1tokenized.stats.local\$1blks\$1dirtied\$1per\$1sec | 每秒弄脏的本地块数 | 
| db.sql\$1tokenized.stats.local\$1blks\$1written\$1per\$1sec | 每秒本地块写入次数 | 
| db.sql\$1tokenized.stats.temp\$1blks\$1written\$1per\$1sec | 每秒临时写入次数 | 
| db.sql\$1tokenized.stats.temp\$1blks\$1read\$1per\$1sec | 每秒临时读取次数 | 
| db.sql\$1tokenized.stats.blk\$1read\$1time\$1per\$1sec | 每秒平均并发读取次数 | 
| db.sql\$1tokenized.stats.blk\$1write\$1time\$1per\$1sec | 每秒平均并发写入次数 | 

## 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>

以下 SQL 统计数据可用于 Aurora PostgreSQL 数据库实例。


| 指标 | 单位 | 
| --- | --- | 
| db.sql\$1tokenized.stats.calls | Calls  | 
| db.sql\$1tokenized.stats.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)。