WEB开发网
开发学院数据库Oracle Oracle数据库11g:SQL计划管理(三) 阅读

Oracle数据库11g:SQL计划管理(三)

 2008-09-04 12:50:18 来源:WEB开发网   
核心提示: 接下来,我将瞄准SPA任务SPA_SPM_300,Oracle数据库11g:SQL计划管理(三)(2),评估在Oracle10gR2和Oracle11gR1数据库环境之间模拟的工作负载性能,首先我会清除我的Oracle11g的库缓存和数据库缓存,SPM将改变该计划的状态为ACCEPTED,

接下来,我将瞄准SPA任务SPA_SPM_300,评估在Oracle10gR2和Oracle11gR1数据库环境之间模拟的工作负载性能,首先我会清除我的Oracle11g的库缓存和数据库缓存,确保提供一个干净的性能评估起点。然后,我会设置初始化参数OPTIMIZER_FEATURES_ENABLE的值为10.0.0.0,欺骗优化器相信它是一个Oracle10g数据库,最后,我会通过执行SPA_SPM_300一次测试分析那个模式下的性能,一旦这个顺序完成了,我将设置OPTIMIZER_FEATURES_ENABLE的值为11.1.0.6,然后重复相同的分析,SPA将在Oracle11g环境下评估工作负载,这里用到的代码在列表3.3中。

比较相关的工作负载性能

一旦这两个工作负载执行测试完成,我下一个任务是判断是否有SQL语句因为优化器设置改变而性能倒退了,我使用的代码在列表3.4中,它们比较两个工作负载模拟情况,然后生成一个关于哪些SQL语句性能下降了的报告。为了在这里展示SQL性能分析器的灵活性,我避开使用一个相对变化的优化成本作为我的度量值,相反,我选择基于估计执行时间进行SQL语句比较。

为性能倒退的SQL语句捕获SQL计划基线

与分析报告显示的结果一样,在模拟从10.2.0.1升级到11.1.0.6时,有两条SQL语句产生了负面的影响(性能降低了),我将捕获这些语句的执行计划到SQL计划基线中,这将防止CBO使用11g优化器设置运行这些SQL语句,它会因这些语句引起有害的性能,列表3.5中的代码说明了如何实现这个。

控制SQL计划演变

Oracle11g创建了新术语“SQL计划演变”来描述查找一套SQL语句的最佳执行计划的渐进过程,我在本系列的第一篇文章中提到过,无论何时,SPM为SMB中的SQL语句拦截一个新的执行计划,然后,SPM保存那个计划到SMB中将其作为SQL语句历史的一部分,然而,SPM不允许使用该计划除非它通过了性能评估,能提升性能。如果SPM判断该新计划可以提升性能,SPM将改变该计划的状态为ACCEPTED,这个概念与计划进展一样著名,在SMB中的SQL语句自动演变是SPM的核心。

上一页  1 2 3 4 5 6  下一页

Tags:Oracle 数据库 SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接