Oracle数据库11g:SQL计划管理(三)
2008-09-04 12:50:18 来源:WEB开发网接下来,我将瞄准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的核心。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
更多精彩
赞助商链接