

# Amazon RDS 上的 Performance Insights 概述
<a name="USER_PerfInsights.Overview"></a>

**重要**  
 AWS 已宣布性能详情功能的生命周期终止日期为：2026 年 6 月 30 日。在此日期之后，Amazon RDS 将不再支持性能详情控制台体验、灵活的保留期（1-24 个月）及其关联定价。性能详情 API 将继续存在，定价不变。性能详情 API 的费用将与 CloudWatch 数据库洞察的费用一起显示在您的 AWS 账单中。  
 建议您在 2026 年 6 月 30 日之前，将使用性能详情付费套餐的所有数据库实例升级到数据库洞察的高级模式。有关升级到数据库洞察的高级模式的信息，请参阅[开启适用于 Amazon RDS 的数据库洞察的高级模式](USER_DatabaseInsights.TurningOnAdvanced.md)。  
 如果您不采取任何行动，则使用性能详情的数据库实例将默认为使用数据库洞察的标准模式。在数据库洞察的标准模式下，您可能会在 7 天后无法访问性能数据历史记录，并且可能无法在 Amazon RDS 控制台中使用执行计划和按需分析功能。2026 年 6 月 30 日之后，只有数据库洞察的高级模式将支持执行计划和按需分析。  
 借助 CloudWatch 数据库洞察，您可以监控数据库实例集的数据库负载，并对性能进行大规模分析和故障排除。有关数据库洞察的更多信息，请参阅[使用 CloudWatch 数据库洞察监控 Amazon RDS 数据库](USER_DatabaseInsights.md)。有关定价信息，请参阅 [Amazon CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/)。

默认情况下，RDS 在控制台创建向导中为所有 Amazon RDS 引擎启用 Performance Insights。如果一个数据库实例中有多个数据库，则 Performance Insights 会聚合性能数据。

可在以下视频中大致了解 Amazon RDS 的 Performance Insights。

[![AWS Videos](http://img.youtube.com/vi/yOeWcPBT458/0.jpg)](http://www.youtube.com/watch?v=yOeWcPBT458)


**重要**  
以下主题说明如何将 Amazon RDS Performance Insights 与非 Aurora 数据库引擎结合使用。有关将 Amazon RDS Performance Insights 与 Amazon Aurora 结合使用的信息，请参阅《Amazon Aurora 用户指南》**中的[使用 Amazon RDS Performance Insights](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights.html)。

**Topics**
+ [数据库负载](USER_PerfInsights.Overview.ActiveSessions.md)
+ [最大 CPU](USER_PerfInsights.Overview.MaxCPU.md)
+ [支持性能详情的 Amazon RDS 数据库引擎、区域和实例类](USER_PerfInsights.Overview.Engines.md)
+ [性能详情的定价和数据留存](USER_PerfInsights.Overview.cost.md)

# 数据库负载
<a name="USER_PerfInsights.Overview.ActiveSessions"></a>

*数据库负载（DB 负载）*衡量数据库中的会话活动级别。`DBLoad` 是 Performance Insights 中的关键指标，Performance Insights 每秒都会收集数据库负载。

**Topics**
+ [活动的会话](#USER_PerfInsights.Overview.ActiveSessions.active-sessions)
+ [平均活动会话数](#USER_PerfInsights.Overview.ActiveSessions.AAS)
+ [平均活动执行数](#USER_PerfInsights.Overview.ActiveSessions.AAE)
+ [尺寸](#USER_PerfInsights.Overview.ActiveSessions.dimensions)

## 活动的会话
<a name="USER_PerfInsights.Overview.ActiveSessions.active-sessions"></a>

*数据库会话*表示的是应用程序与关系数据库的对话。活动的会话 是已将作业提交到数据库引擎并且正在等待响应的连接。

当会话在 CPU 上运行或等待资源变为可用以便继续执行时，该会话即处于活动状态。例如，活动的会话可能会等待页面（或块）读入内存中，然后占用 CPU 以从页面读取数据。

## 平均活动会话数
<a name="USER_PerfInsights.Overview.ActiveSessions.AAS"></a>

*平均活动会话数（AAS）*是 Performance Insights 中 `DBLoad` 指标的单位。它衡量数据库上有多少个会话同时处于活动状态。

Performance Insights 每秒都会对并行运行查询的会话数进行采样。对于每个活动的会话，Performance Insights 都会收集以下数据：
+ SQL 语句
+ 会话状态（正在 CPU 上运行或正在等待）
+ Host
+ 运行 SQL 的用户

Performance Insights 通过以下方式计算 AAS：对于特定时间段内，将会话总数除以样本数。例如，下表显示了正在运行的查询的 5 个连续样本，其间隔为 1 秒。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.ActiveSessions.html)

在前面的示例中，该时间间隔的数据库负载为 2 AAS。这一测量结果表明，在采集 5 个样本的时间间隔内，在任何给定时间，平均有 2 个会话处于活动状态。

## 平均活动执行数
<a name="USER_PerfInsights.Overview.ActiveSessions.AAE"></a>

每秒的平均活动执行数 (AAE) 与平均活动会话数相关。为了计算平均活动执行数，Performance Insights 使用查询的总执行时间除以时间间隔。下表显示了上表中同一查询的平均活动执行数计算。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.ActiveSessions.html)

在大多数情况下，查询的平均活动会话数和平均活动执行数大致相同。但是，由于计算所用的数据是不同的数据源，因此计算通常略有不同。

## 尺寸
<a name="USER_PerfInsights.Overview.ActiveSessions.dimensions"></a>

`db.load` 指标不同于其他时间序列指标，因为您可以将它分为称为维度的子组件。您可以将维度视为 `DBLoad` 指标的不同特征的“切片依据”类别。

诊断性能问题时，以下维度通常最有用：

**Topics**
+ [等待事件](#USER_PerfInsights.Overview.ActiveSessions.waits)
+ [主要 SQL](#USER_PerfInsights.Overview.ActiveSessions.top-sql)
+ [计划](#USER_PerfInsights.Overview.ActiveSessions.plans)

有关 Amazon RDS 引擎维度的完整列表，请参阅 [按维度切片的数据库负载](USER_PerfInsights.UsingDashboard.Components.md#USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.dims)。

### 等待事件
<a name="USER_PerfInsights.Overview.ActiveSessions.waits"></a>

*等待事件* 会导致 SQL 语句等待特定事件发生，然后才能继续运行。等待事件是数据库负载的一个重要维度（或称类别），因为它们指示了工作受阻的位置。

每个活动的会话要么会在 CPU 上运行，要么仍在等待。例如，在搜索内存寻找缓冲区、执行计算或运行过程代码时，会话都会占用 CPU。当会话不占用 CPU 时，它们可能正在等待内存缓冲区变为空闲、等待要读取的数据文件或等待将要写入的日志。会话等待资源的时间越长，它在 CPU 上运行的时间就越少。

当您优化数据库时，经常尝试找出会话正在等待的资源。例如，两三个等待事件可能会占据数据库负载的 90％。这一测量结果表明，平均而言，活动会话花费了大部分时间用于等待少量资源。如果您能找出导致这些等待的原因，就可以尝试提出解决方案了。

等待事件因数据库引擎而异：
+ 有关所有 MariaDB 和 MySQL 等待事件的信息，请参阅 MySQL 文档中的[等待事件摘要表](https://dev.mysql.com/doc/refman/8.0/en/performance-schema-wait-summary-tables.html)。
+ 有关所有 PostgreSQL 等待事件的信息，请参阅 PostgreSQL 文档中的[统计数据收集器 > 等待事件表](https://www.postgresql.org/docs/current/monitoring-stats.html#WAIT-EVENT-TABLE)。
+ 有关所有 Oracle 等待事件的信息，请参阅 Oracle 文档中的[等待事件说明](https://docs.oracle.com/database/121/REFRN/GUID-2FDDFAA4-24D0-4B80-A157-A907AF5C68E2.htm#REFRN-GUID-2FDDFAA4-24D0-4B80-A157-A907AF5C68E2)。
+ 有关所有 SQL Server 等待事件的信息，请参阅 SQL Server 文档中的[等待类型](https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-os-wait-stats-transact-sql?view=sql-server-2017#WaitTypes)。

**注意**  
对于 Oracle，后台进程有时在没有关联的 SQL 语句的情况下工作。在这些情况下，Performance Insights 报告以冒号连接的后台进程类型以及与该后台进程关联的等待类。后台进程类型包括 `LGWR`、`ARC0`、`PMON` 等。  
例如，在存档程序执行 I/O 时，它的 Performance Insights 报告类似于 `ARC1:System I/O`。有时，还会缺少后台进程类型，而 Performance Insights 仅报告等待类，例如 `:System I/O`。

### 主要 SQL
<a name="USER_PerfInsights.Overview.ActiveSessions.top-sql"></a>

等待事件显示运行中的瓶颈，而主要 SQL 则显示哪些查询对数据库负载的影响最大。例如，当前可能正在数据库上运行着许多查询，但某一个查询可能会占用 99% 的数据库负载。在这种情况下，高负载可能表示查询存在问题。

默认情况下，Performance Insights 控制台会显示导致数据库负载的主要 SQL 查询。控制台还显示每个语句的相关统计信息。要诊断特定语句的性能问题，可以检查其执行计划。

### 计划
<a name="USER_PerfInsights.Overview.ActiveSessions.plans"></a>

*执行计划*，也简称为*计划*，是访问数据的一系列步骤。例如，连接表 `t1` 和 `t2` 的计划可能会循环访问 `t1` 中的所有行，并将每一行与 `t2` 中的行进行比较。在关系数据库中，*优化程序*是确定 SQL 查询最有效计划的内置代码。

对于数据库实例，Performance Insights 会自动收集执行计划。要诊断 SQL 性能问题，请检查为高资源 SQL 查询捕获的计划。这些计划会显示数据库如何解析和运行查询。

要了解如何使用计划分析数据库负载，请参阅：
+ Oracle：[使用 Amazon RDS 的性能详情控制面板分析 Oracle 执行计划](USER_PerfInsights.UsingDashboard.AccessPlans.md)
+ SQL Server：[使用 Amazon RDS 的性能详情控制面板分析 SQL Server 执行计划](USER_PerfInsights.UsingDashboard.AccessPlansSqlServer.md)

#### 计划捕获
<a name="USER_PerfInsights.Overview.ActiveSessions.plans.capture"></a>

Performance Insights 每五分钟就会识别资源密集度最高的查询并捕获其计划。因此，无需手动收集和管理大量计划。相反，您可以使用 **Top SQL**（主要 SQL）选项卡重点关注问题最严重的查询计划。

**注意**  
Performance Insights 不会捕获文本超过最大可收集查询文本限制的查询计划。有关更多信息，请参阅 [在 Performance Insights 控制面板中访问更多 SQL 文本](USER_PerfInsights.UsingDashboard.SQLTextSize.md)。

执行计划的保留期与 Performance Insights 数据的保留期相同。免费套餐中的保留设置为 **Default (7 days)** [原定设置（7 天）]。要将性能数据保留更长时间，请指定 1–24 个月。有关保留期的更多信息，请参阅[性能详情的定价和数据留存](USER_PerfInsights.Overview.cost.md)。

#### 摘要查询
<a name="USER_PerfInsights.Overview.ActiveSessions.plans.digest"></a>

**Top SQL**（主要 SQL）选项卡默认显示摘要查询。摘要查询本身没有计划，但所有使用文本值的查询都有计划。例如，摘要查询可能包括文本 `WHERE `email`=?`。摘要可能包含两个查询，一个带有文本 `WHERE email=user1@example.com`，另一个带有 `WHERE email=user2@example.com`。每个文本查询都可能包括多个计划。

如果选择摘要查询，控制台将显示所选摘要的子语句的所有计划。因此，无需浏览所有子语句即可查看计划。计划可能不会显示在前 10 个子语句的列表中。控制台会显示已收集计划的所有子查询计划，无论查询是否在前 10 列表中。

# 最大 CPU
<a name="USER_PerfInsights.Overview.MaxCPU"></a>

在控制面板中，**数据库负载**图表会收集、聚合和显示会话信息。要查看活动会话是否超过最大 CPU，请查看它们与**最大 vCPU** 线的关系。Performance Insights 根据数据库实例的 vCPU（虚拟 CPU）内核数，来决定**最大 vCPU** 值。

一次只能在 vCPU 上运行一个进程。如果进程数超过 vCPU 的数量，则进程开始排队。当排队增加时，数据库性能就会降低。如果数据库负载经常高于**最大 vCPU** 线并且主要等待状态为 CPU，则表示 CPU 过载。在这种情况下，您可能需要限制与实例的连接数，优化具有高 CPU 负载的任何 SQL 查询，或考虑使用更大的实例类。如果始终有大量实例处于任何等待状态，则表示可能存在要解决的瓶颈或资源争用问题。即使数据库负载未越过**最大 vCPU** 线，也可能会出现此问题。

# 支持性能详情的 Amazon RDS 数据库引擎、区域和实例类
<a name="USER_PerfInsights.Overview.Engines"></a>

**重要**  
 AWS 已宣布性能详情功能的生命周期终止日期为：2026 年 6 月 30 日。在此日期之后，Amazon RDS 将不再支持性能详情控制台体验、灵活的保留期（1-24 个月）及其关联定价。性能详情 API 将继续存在，定价不变。性能详情 API 的费用将与 CloudWatch 数据库洞察的费用一起显示在您的 AWS 账单中。  
 建议您在 2026 年 6 月 30 日之前，将使用性能详情付费套餐的所有数据库实例升级到数据库洞察的高级模式。有关升级到数据库洞察的高级模式的信息，请参阅[开启适用于 Amazon RDS 的数据库洞察的高级模式](USER_DatabaseInsights.TurningOnAdvanced.md)。  
 如果您不采取任何行动，则使用性能详情的数据库实例将默认为使用数据库洞察的标准模式。在数据库洞察的标准模式下，您可能会在 7 天后无法访问性能数据历史记录，并且可能无法在 Amazon RDS 控制台中使用执行计划和按需分析功能。2026 年 6 月 30 日之后，只有数据库洞察的高级模式将支持执行计划和按需分析。  
 借助 CloudWatch 数据库洞察，您可以监控数据库实例集的数据库负载，并对性能进行大规模分析和故障排除。有关数据库洞察的更多信息，请参阅[使用 CloudWatch 数据库洞察监控 Amazon RDS 数据库](USER_DatabaseInsights.md)。有关定价信息，请参阅 [Amazon CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/)。

下表提供支持性能详情的 Amazon RDS 数据库引擎。

**注意**  
有关 Amazon Aurora，请参阅《Amazon Aurora 用户指南》**中的[支持性能详情的 Amazon Aurora 数据库引擎](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights.Overview.Engines.html)


|  Amazon RDS 数据库引擎  | 支持的引擎版本和区域 | 实例类限制 | 
| --- | --- | --- | 
|  Amazon RDS for MariaDB  |  有关适用于 RDS for MariaDB 的性能详情的版本和区域可用性的更多信息，请参阅[支持 Amazon RDS 中 Performance Insights 的区域和数据库引擎](Concepts.RDS_Fea_Regions_DB-eng.Feature.PerformanceInsights.md)。  |  以下实例类别不支持性能详情： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.Engines.html)  | 
|  RDS for MySQL  |  有关适用于 RDS for MySQL 的性能详情的版本和区域可用性的更多信息，请参阅[支持 Amazon RDS 中 Performance Insights 的区域和数据库引擎](Concepts.RDS_Fea_Regions_DB-eng.Feature.PerformanceInsights.md)。  |  以下实例类别不支持性能详情： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.Engines.html)  | 
|  Amazon RDS for Microsoft SQL Server  |  有关适用于 RDS for SQL Server 的性能详情的版本和区域可用性的更多信息，请参阅[支持 Amazon RDS 中 Performance Insights 的区域和数据库引擎](Concepts.RDS_Fea_Regions_DB-eng.Feature.PerformanceInsights.md)。  |  不适用  | 
|  Amazon RDS for PostgreSQL  |  有关适用于 RDS for PostgreSQL 的性能详情的版本和区域可用性的更多信息，请参阅[支持 Amazon RDS 中 Performance Insights 的区域和数据库引擎](Concepts.RDS_Fea_Regions_DB-eng.Feature.PerformanceInsights.md)。  |  不适用  | 
|  Amazon RDS for Oracle  |  有关适用于 RDS for Oracle 的性能详情的版本和区域可用性的更多信息，请参阅[支持 Amazon RDS 中 Performance Insights 的区域和数据库引擎](Concepts.RDS_Fea_Regions_DB-eng.Feature.PerformanceInsights.md)。  |  不适用  | 

## 支持性能详情功能的 Amazon RDS 数据库引擎、区域和实例类
<a name="USER_PerfInsights.Overview.PIfeatureEngnRegSupport"></a>

下表提供支持性能详情功能的 Amazon RDS 数据库引擎。


| 功能 | [定价套餐](https://aws.amazon.com/rds/performance-insights/pricing/) |  [支持的区域](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html#Concepts.RegionsAndAvailabilityZones.Regions)  |  [支持的数据库引擎](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html#Welcome.Concepts.DBInstance)  |  [支持的实例类](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html#Concepts.DBInstanceClass.Types)  | 
| --- | --- | --- | --- | --- | 
| [Performance Insights 的 SQL 统计数据](sql-statistics.md) | 全部 | 全部 |  全部  | 全部 | 
| [使用 Amazon RDS 的性能详情控制面板分析 Oracle 执行计划](USER_PerfInsights.UsingDashboard.AccessPlans.md) | 全部 | 全部 |  RDS for Oracle  | 全部 | 
| [分析一段时间内的数据库性能](USER_PerfInsights.UsingDashboard.AnalyzePerformanceTimePeriod.md) | 仅限付费套餐 |  全部  |  RDS for PostgreSQL  |  全部  | 
|  [查看性能详情主动建议](USER_PerfInsights.InsightsRecommendationViewDetails.md) | 仅限付费套餐 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.Engines.html)  |  全部  | 全部  | 

# 性能详情的定价和数据留存
<a name="USER_PerfInsights.Overview.cost"></a>

原定设置情况下，性能详情提供免费套餐，其中包括 7 天的性能数据历史记录和每月 100 万个 API 请求。您也可以购买更长的保留期。有关完整的定价信息，请参阅[性能详情定价](https://aws.amazon.com/rds/performance-insights/pricing/)。

在 RDS 控制台中，您可以为性能详情数据选择以下任何保留期：
+ **原定设置（7 天）**
+ ***n* 个月**，其中 ***n*** 是 1–24 之间的数字

![\[为您的性能详情数据选择保留期。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/pi-retention-periods.png)


要了解如何使用 AWS CLI 设置保留期，请参阅。