使用 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 对查询进行切片一样,您也可以按计划维度对查询进行切片。