使用 Performance Insights 控制面板分析 Oracle 执行计划 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Performance Insights 控制面板分析 Oracle 执行计划

分析 Oracle Database 上的数据库负载时,您可能想了解哪些计划对数据库负载的影响最大。例如,给定时间的主要 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。此时数据库是否发生了变化? 例如,如果表为空,优化程序可能会选择全表扫描。如果表加载了一百万行,优化程序可能会切换至索引范围扫描。

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

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

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

有关此功能的区域、数据库引擎和实例类支持信息,请参阅支持性能详情功能的 Amazon RDS 数据库引擎、区域和实例类

使用控制台分析 Oracle 执行计划
  1. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Performance Insights

  3. 选择 Oracle 数据库实例。将为该数据库实例显示 Performance Insights 控制面板。

  4. Database load (DB load)(数据库负载)部分,选择 Slice by(切片依据)旁边的 Plans(计划)。

    平均活动会话图表显示了主要 SQL 语句使用的计划。计划哈希值显示在彩色方块的右侧。每个哈希值唯一标识每个计划。

    
					按计划切片
  5. 向下滚动至 Top SQL(主要 SQL)选项卡。

    在以下示例中,主要 SQL 摘要具有两个计划。您可以通过语句中的问号来判断其是否为摘要。

    
					选择摘要计划
  6. 选择摘要,将其扩展到其组件语句中。

    在以下示例中,SELECT 语句为摘要查询。摘要中的组件查询使用两种不同的计划。计划的颜色对应于数据库负载图表。摘要中的计划总数在显示第二列。

    
					选择摘要计划
  7. 向下滚动,然后从 Plans for digest query(摘要查询计划)列表中选择两个要比较的 Plans(计划)。

    您可以一次查看一个或两个查询计划。以下屏幕截图比较了摘要中的两个计划,哈希值分别为 2032253151 和 1117438016。在以下示例中,运行此摘要查询的平均活动会话中有 62% 使用左侧的计划,其余 38% 使用右侧的计划。

    
					并排比较计划

    在此示例中,两个计划存在明显不同。计划 2032253151 中的步骤 2 使用索引扫描,计划 1117438016 中的步骤 2 使用全表扫描。对于具有大量行的表,使用索引扫描对单行进行查询通常更快。

    
					并排比较计划
  8. (可选)选择 Copy(复制)将计划复制到剪贴板,或者选择 Download(下载)将计划保存到硬盘。