从事IT基础架构多年,发现自己原来更合适去当老师……喜欢关注新鲜事物,不仅限于IT领域。
分类: Oracle
2006-04-04 14:31:44
You control dynamic sampling with the OPTIMIZER_DYNAMIC_SAMPLING
parameter, which can be set to a value from 0
to 10
.
0
means dynamic sampling will not be done.
1
(the default) means dynamic sampling will be performed if all of the following conditions are true:
Dynamic sampling is repeatable if no rows have been inserted, deleted, or updated in the table being sampled.
The parameter OPTIMIZER_FEATURES_ENABLE
turns off dynamic sampling if set to a version prior to 9.0.2.
另外使用DYNAMIC_SAMPLING hint同样可以做动态采样:
SELECT /*+ dynamic_sampling(1) */ * FROM ...
enables dynamic sampling if all of the following conditions are true:
其实,从个人来讲,我不认为oracle的CBO方式比RBO要强很多,虽然在大多数情况下数据库可以选择良好的执行计划,但对于复杂的系统来说,依靠定时收集信息来选择的执行计划并不能很好的适应完全实时运行的系统。同时,9i中对于大表的信息收集效率很低,即使部分采样也很慢。10G中似乎对于这样的问题有了更好的解决办法,不过与oracle工程师闲聊时,他们并不推荐10G用于OLTP系统,但在OLAP中会有很好的表现。
以上只是自己的一下想法,正确性有待验证。