

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 数据库实例的性能详情指标
<a name="db-instance-performance-insights"></a>

性能详情会监控不同类型的指标，如以下各部分所述。

## 数据库负载
<a name="dbload"></a>

数据库负载（`DBLoad`）是性能详情中的一项关键指标，用于衡量数据库中的活动水平。它每秒收集一次，并自动发布到 Amazon CloudWatch。它以平均活跃会话数（AAS）表示数据库实例的活动，即同时运行 SQL 查询的会话数。`DBLoad` 指标与其他时间序列指标不同，因为它可以使用以下五个维度中的任何一个来解释：等待、SQL、主机、用户和数据库。这些维度是 `DBLoad` 指标的子类别。您可以将其用作*切片依据*类别，以表示数据库负载的不同特征。有关我们如何计算数据库负载的详细说明，请参阅 Amazon RDS 文档中的[数据库负载](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.ActiveSessions.html)。

以下屏幕插图显示了性能详情工具。

![\[性能详情工具中的数据库负载\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/database-load.png)


## Dimensions
<a name="dimensions"></a>
+ *等待事件*是数据库会话等待资源或其他操作完成才能继续处理的情况。如果您运行诸如`SELECT * FROM big_table`和之类的 SQL 语句，如果此表比分配的 InnoDB 缓冲池大得多，则您的会话很可能会`wait/io/file/innodb/innodb_data_file`等待等待事件，这些事件是由对数据文件的物理 I/O 操作引起的。等待事件是数据库监控的一个重要维度，因为它们可以指示可能的性能瓶颈。等待事件指示您在会话内运行的 SQL 语句等待时间最长的资源和操作。例如，当数据库活动频繁且事务数量庞大时，会发生 `wait/synch/mutex/innodb/trx_sys_mutex` 事件；当线程获取 InnoDB 缓冲池的锁以访问内存中的页面时，会发生 `wait/synch/mutex/innodb/buf_pool_mutex` 事件。有关所有 MySQL 和 MariaDB 等待事件的信息，请参阅 MySQL 文档中的 [Wait Event Summary Tables](https://dev.mysql.com/doc/refman/8.0/en/performance-schema-wait-summary-tables.html)。要了解如何解释工具名称，请参阅 MySQL 文档中的 [Performance Schema Instrument Naming Conventions](https://dev.mysql.com/doc/refman/8.0/en/performance-schema-instrument-naming.html)。
+ *SQL* 显示哪些 SQL 语句对数据库总负载贡献最大。位于 Amazon RDS 性能详情中**数据库负载**图表下方的**主要维度**表是交互式的。通过单击**按等待状态排列的负载（AAS）**列中的栏，您可以获取与 SQL 语句关联的等待事件的详细列表。当您在列表中选择 SQL 语句时，性能详情会在**数据库负载**图表中显示关联的等待事件，在 **SQL 文本**部分中显示相应的 SQL 语句文本。SQL 统计信息显示在**主要维度**表的右侧。
+ *主机*显示所连接客户端的主机名 此维度可帮助您确定哪些客户端主机正在向数据库发送大部分负载。
+ *用户*按登录数据库的用户对数据库负载进行分组。
+ *数据库*按客户端所连接的数据库的名称对数据库负载进行分组。

## 计数器指标
<a name="counter-metrics"></a>

计数器指标是累积指标，其值只能在数据库实例重启时增加或重置为零。计数器指标的值不能减少到之前的值。这些指标代表一个单调递增的计数器。
+ [原生计数器](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights_Counters.html#USER_PerfInsights_Counters.MySQL.Native)是由数据库引擎（而不是由 Amazon RDS）定义的指标。例如：
  + `SQL.Innodb_rows_inserted` 表示插入到 InnoDB 表中的行数。
  + `SQL.Select_scan` 表示完成对第一个表的完整扫描的联接数。
  + `Cache.Innodb_buffer_pool_reads` 表示 InnoDB 引擎无法从缓冲池中检索而必须直接从磁盘读取的逻辑读取次数。
  + `Cache.Innodb_buffer_pool_read_requests` 表示逻辑读取请求的数。

  有关所有原生指标的定义，请参阅 MySQL 文档中的[服务器状态变量](https://dev.mysql.com/doc/refman/8.0/en/server-status-variables.html)。
+ [非原生计数器](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights_Counters.html#USER_PerfInsights_Counters.MySQL.NonNative)由 Amazon RDS 定义。您可以使用特定的查询来获取这些指标，也可以通过在计算中使用两个或多个原生指标来推导这些指标。非原生计数器指标可以表示延迟、比率或命中率。例如：
  + `Cache.innoDB_buffer_pool_hits` 表示 InnoDB 在不利用磁盘的情况下可以从缓冲池中检索的读取操作数。它是根据原生计数器指标计算得出的，如下所示：

    ```
    db.Cache.Innodb_buffer_pool_read_requests - db.Cache.Innodb_buffer_pool_reads
    ```
  + `IO.innoDB_datafile_writes_to_disk` 表示 InnoDB 数据文件向磁盘写入操作的次数。它只捕获对数据文件的操作，而不是双重写入或重做日志记录写入操作。按如下方式计算：

    ```
    db.IO.Innodb_data_writes - db.IO.Innodb_log_writes - db.IO.Innodb_dblwr_writes
    ```

您可以在性能详情控制面板中直接可视化数据库实例指标。选择**管理指标**，选择**数据库指标**选项卡，然后选择感兴趣的指标，如下图所示。

![\[在性能详情中选择数据库实例指标\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/selecting-metrics.png)


选择**更新图表**按钮，以显示您选择的指标，如下图所示。

![\[在性能详情中查看数据库实例指标\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/selecting-metrics-results.png)


## SQL 统计数据
<a name="sql-stats"></a>

性能详情会收集与 SQL 查询相关的性能指标，包括查询运行的每一秒以及每次 SQL 调用。通常，性能详情会在语句和摘要级别收集 [SQL 统计数据](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.MySQL.html)。但是，对于 MariaDB 和 MySQL 数据库实例，统计数据仅在摘要级别收集。
+ 摘要统计数据是所有具有相同模式但最终具有不同文本值的查询的复合指标。摘要用变量替换特定的文本值；例如：

  ```
  SELECT department_id, department_name FROM departments WHERE location_id = ?
  ```
+ 有些指标表示*每秒*处理的每个已解析 SQL 语句的统计数据。例如，`sql_tokenized.stats.count_star_per_sec` 表示每秒调用次数（即 SQL 语句每秒运行的次数）。
+ 性能详情还包括提供 SQL 语句*每次调用*统计数据的指标。例如，`sql_tokenized.stats.sum_timer_wait_per_call` 显示每次调用 SQL 语句的平均延迟（以毫秒为单位）。

SQL 统计数据可在“性能详情”控制面板的**主要维度**表中的**主要 SQL** 选项卡中找到。

![\[SQL 统计数据\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/sql-stats.png)
