

# 使用 Amazon RDS 的性能详情控制面板分析执行计划
<a name="USER_PerfInsights.UsingDashboard.AnalyzingPlans"></a>

在 Amazon RDS 性能详情控制面板中，您可以找到有关 Oracle 和 SQL Server 数据库实例的执行计划的信息。您可以使用这些信息来了解哪些计划对数据库负载的贡献最大。

要分析 Oracle 或 SQL Server 执行计划，请参阅以下主题。

**分析执行计划**
+ [使用 Amazon RDS 的性能详情控制面板分析 Oracle 执行计划](USER_PerfInsights.UsingDashboard.AccessPlans.md)
+ [使用 Amazon RDS 的性能详情控制面板分析 SQL Server 执行计划](USER_PerfInsights.UsingDashboard.AccessPlansSqlServer.md)

## 分析 Amazon RDS 的执行计划概述
<a name="USER_PerfInsights.UsingDashboard.AnalyzingPlans.Overview"></a>

您可以使用 Amazon RDS 性能详情控制面板，来了解哪些计划对 Oracle 和 SQL Server 数据库实例的数据库负载贡献最大。

 例如，给定时间的主要 SQL 语句可能正在使用下表所示的计划。


****  

| 主要 SQL | 规划 | 
| --- | --- | 
|  SELECT SUM(amount\$1sold) FROM sales WHERE prod\$1id = 10  |  计划 A  | 
|  SELECT SUM(amount\$1sold) FROM sales WHERE prod\$1id = 521  |  计划 B  | 
|  SELECT SUM(s\$1total) FROM sales WHERE region = 10  |  计划 A  | 
|  SELECT \$1 FROM emp WHERE emp\$1id = 1000  |  计划 C  | 
|  SELECT SUM(amount\$1sold) FROM sales WHERE prod\$1id = 72  |  计划 A  | 

使用 Performance Insights 的计划功能，您可以执行以下操作：
+ 了解主要 SQL 查询使用哪些计划。

  例如，您可能会发现，大多数数据库负载是由使用计划 A 和计划 B 的查询生成的，只有很小一部分查询使用计划 C。
+ 比较同一查询的不同计划。

  在前面的示例中，除产品 ID 外，三个查询都相同。其中两个查询使用计划 A，另一个查询使用计划 B。若要查看两个计划的差异，您可以使用 Performance Insights。
+ 了解查询何时切换到新计划。

  您可能会看到查询使用了计划 A，然后在某个时间切换到计划 B。此时数据库是否发生了变化？ 例如，如果表为空，优化程序可能会选择全表扫描。如果表加载了一百万行，优化程序可能会切换至索引范围扫描。
+ 深入了解成本最高的计划的具体步骤。

  例如，对于长时间运行的查询，可能会在 equi-join 中显示缺少联接条件。此缺失条件会强制进行笛卡尔联接，将两个表的所有行联接起来。

您可以使用 Performance Insights 的计划捕获功能来执行上述任务。正如您可以按等待事件和主要 SQL 对查询进行切片一样，您也可以按计划维度对查询进行切片。