

# 使用 CloudWatch 数据库洞察分析执行计划
<a name="Database-Insights-Execution-Plans"></a>

您可以使用以下方法来分析 Amazon Aurora PostgreSQL、RDS for Microsoft SQL Server 和 RDS for Oracle 数据库的执行计划。
+ **划分者**下拉列表：在**数据库负载**图表中选择**计划**维度，以查看不同计划在一段时间内对数据库负载的贡献。
+ **热门 SQL** 选项卡 – 选择**数据库负载分析**，然后选择**热门 SQL** 选项卡，以查看各摘要查询的计划数量。

  要分析摘要查询的执行计划，可选择该查询，然后选择**计划**选项卡。有关更多信息，请参阅以下步骤。

## 先决条件
<a name="Database-Insights-Execution-Plans-prereqs"></a>

要分析执行计划，必须使用数据库洞察的高级模式。有关如何开启高级模式的信息，请参阅[开启适用于 Amazon Aurora 的数据库洞察的高级模式](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_DatabaseInsights.TurningOnAdvanced.html)和 [Turning on the Advanced mode of Database Insights for Amazon Relational Database Service](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DatabaseInsights.TurningOnAdvanced.html)。

如果您使用的是 Aurora PostgreSQL，则还需满足以下先决条件：
+ 您的数据库实例必须使用 Aurora PostgreSQL 版本 14.10、15.5 或更高版本。有关升级 Aurora PostgreSQL 数据库集群的信息，请参阅**《Amazon Aurora 用户指南》中的[升级 Amazon Aurora PostgreSQL 数据库集群](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_UpgradeDBInstance.PostgreSQL.html)。
+ 您必须使用以下选项之一，将参数 `aurora_compute_plan_id` 设置为 `on` 来配置数据库集群以分析执行计划。
  + **《Amazon Aurora 用户指南》中的[在 Amazon Aurora 中创建数据库集群参数组](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_WorkingWithParamGroups.CreatingCluster.html)
  + 《Amazon Aurora 用户指南》**中的[在 Amazon Aurora 中修改数据库集群参数组中的参数](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_WorkingWithParamGroups.ModifyingCluster.html)

## 分析执行计划
<a name="Database-Insights-Execution-Plans-analyze"></a>

要分析执行计划，请按以下流程操作。

**分析执行计划**

1. 登录 AWS 管理控制台并打开 CloudWatch 控制台（[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)）。

1. 选择 **Insights**。

1. 选择 **Database Insights**。

1. 选择**数据库实例**视图。

1. 选择一个数据库实例。

1. 选择 **Top SQL**（主要 SQL）选项卡。**计划数**列显示针对每个摘要查询收集的计划数。

1. （可选）如果未出现**计划数**列，请选择**主要 SQL** 表上的**设置**图标，以自定义列的可见性和顺序。  
![\[计划详细信息表设置\]](http://docs.aws.amazon.com/zh_cn/AmazonCloudWatch/latest/monitoring/images/DBInsights2.png)

1. 选择一个摘要查询，将其扩展为其组件语句。  
![\[将查询扩展为其组件语句\]](http://docs.aws.amazon.com/zh_cn/AmazonCloudWatch/latest/monitoring/images/dbi_did-dbload-expand.png)

1. 向下滚动并查看 SQL 文本。然后，选择**计划**选项卡。

   默认情况下，CloudWatch 会显示预计的执行计划。对于 Aurora PostgreSQL，要查看实际执行计划，请启用数据库实例的 `aurora_stat_plans.with_analyze` 参数。有关参数 `aurora_stat_plans.with_analyze` 的更多信息，请参阅《Amazon Aurora 用户指南》**中的[监控 Aurora PostgreSQL 的查询执行计划和峰值内存](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Monitoring.Query.Plans.html#aurora.with_analyze)。

1. 要比较来自同一摘要查询的计划，请从**摘要计划查询**列表中选择两个**计划**。

   您可以一次查看一个或两个查询计划。在以下示例屏幕截图中，两个计划都适用于 Aurora PostgreSQL。  
![\[比较计划\]](http://docs.aws.amazon.com/zh_cn/AmazonCloudWatch/latest/monitoring/images/dbi_did-plans.png)

1. 您还可以通过在“数据库负载”图表的**切片方式**下拉列表中选择**计划**，查看随着时间的推移每个计划对数据库负载的贡献情况。  
![\[Database load chart showing active sessions over time with plans contribution highlighted.\]](http://docs.aws.amazon.com/zh_cn/AmazonCloudWatch/latest/monitoring/images/DBInsights_OverTime.png)