从Oracle8中引入的CBO和统计信息收集功能在8i,9i,10g,11g中一直在发展,CBO的设计理想是美好的,但是一直以来也受到用户的质疑,CBO的不够智能,或者说某些时候过于笨,有些时候又过于自作聪明,引发了很多问题。
11g推出之后,Oracle在完善CBO自身功能的同时,又添加了很多允许用户参与的功能,也许言下之意是,CBO的完善还有很长的路要走,但是面对各种现实问题,还是先允许更加聪明的人类用户来参与影响SQL的执行计划吧。
看看新提供的DBMS_STATS.COPY_TABLE_STATS功能,该功能可以改善对于使用range方式来分区的大分区表的统计信息生成方式,这种表往往统计信息更新赶不上数据更新。通过copy statistics可以将一个已经存在的分区统计信息复制到新生成的分区中,该方法基于的理念是每个业务分区的统计信息在数据条数,数据分布,NDV值等等方面都是基本相同的。
再加上之前介绍的SPM功能,也同样是允许用户来决定最终使用哪个执行计划的举措。
数据库管理越来越智能,并不意味着数据库管理员的工作越来越少了。
数据库开发人员的工作越来越多了.
我随后会有一个我所认识的CBO系列文章.