使用 Amazon RDS 的性能详情控制面板分析执行计划 - Amazon Relational Database Service

使用 Amazon RDS 的性能详情控制面板分析执行计划

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

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

分析 Amazon RDS 的执行计划概述

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

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

主要 SQL 规划

SELECT SUM(amount_sold) FROM sales WHERE prod_id = 10

计划 A

SELECT SUM(amount_sold) FROM sales WHERE prod_id = 521

计划 B

SELECT SUM(s_total) FROM sales WHERE region = 10

计划 A

SELECT * FROM emp WHERE emp_id = 1000

计划 C

SELECT SUM(amount_sold) FROM sales WHERE prod_id = 72

计划 A

使用 Performance Insights 的计划功能,您可以执行以下操作:

  • 了解主要 SQL 查询使用哪些计划。

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

  • 比较同一查询的不同计划。

    在前面的示例中,除产品 ID 外,三个查询都相同。其中两个查询使用计划 A,另一个查询使用计划 B。若要查看两个计划的差异,您可以使用 Performance Insights。

  • 了解查询何时切换到新计划。

    您可能会看到查询使用了计划 A,然后在某个时间切换到计划 B。此时数据库是否发生了变化? 例如,如果表为空,优化程序可能会选择全表扫描。如果表加载了一百万行,优化程序可能会切换至索引范围扫描。

  • 深入了解成本最高的计划的具体步骤。

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

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