执行计划不稳定的原因分析

CBO主要的输入有3种:统计信息、环境变量和SQL语句。上面任何一种发生变化,执行计划都有可能发生变化。
1. 统计信息的变化
在10g和11g中,在默认情况下都有一个在晚上运行的后台job收集新的统计信息,如果没有禁用这个job,也就意味着统计信息每天都在自动更新,有可能导致执行计划的突然改变。
在10g和11g中,dbms_stats的no_invalidate默认设置为dbms_stats.auto_invalidate,意味着新的统计信息收集完毕后,与该表相关的游标不回立即失效,而是在接下来的5小时内的某个随机时间点上失效。
2. 运行环境的变化
有很多优化器参数会影响成本的计算,有些参数的值是基于数据库所在服务器的物理特性自动计算的,这就是为什么有时候很难在开发或测试环境中得出与生产环境相匹配的执行计划。
3. SQL语句的变化
以下两个原因可能会导致语句的文本没变而优化器评估的实际SQL语句却发生了变化:
1)引用的底层视图发生了变化;
2)使用绑定变量时传过来的值发生了变化(即绑定变量窥视)。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26277071/viewspace-716277/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26277071/viewspace-716277/

你可能感兴趣的:(执行计划不稳定的原因分析)