从文档来看,NO_INVALIDATE是一个全局统计首选参数。
..controls正在收集统计信息的表的依赖游标的失效。如果设置为TRUE,它不会使依赖游标无效。如果设置为FALSE,则该过程将立即使依赖游标无效。使用DBMS_STATS.AUTO_INVALIDATE可以让系统决定何时使依赖游标失效。这是默认的。
我的问题是,表的依赖游标的含义是什么?
发布于 2016-12-31 09:27:20
简单地说,它们是与表相关的共享池中的解析SQL语句。当它们失效时,它们需要在下次运行时再次被解析。
这方面的一个典型用例是:数据库生成一个次优的执行计划,因为表上的统计数据陈旧。数据库在随后的执行中无法识别此错误,但您会注意到它并决定收集统计数据。对于NO_INVALIDATE => true
,这不会对性能较差的SQL产生任何影响,数据库将继续使用旧的、次优的计划。这就是为什么在这种情况下您应该使用NO_INVALIDATE => false
选项收集统计信息。
https://dba.stackexchange.com/questions/159633
复制相似问题