Oralce中的成本评估机制解析
2009-05-18 13:15:12 来源:WEB开发网数据库管理员编写的SQL语句并不会马上得到解析,而是需要先经过Oracle数据库的优化。优化程序会将最初的SQL语句转换成可以返回相同结果、但执行起来更有效率的SQL语句。如可以通过视图合并、谓词下推等等来减少扫描、连接或者聚合作业,来提高SQL语句的执行性能。但是Oracle数据库毕竟不是人,不会像人的大脑那样去判断什么样的SQL语句才具有更高的执行效率。为此在数据库设计的时侯,必须要设置一个评判的标准,让数据库优化器能够以这个规则去判断,去选择更有效率的SQL语句。
在Oracle数据库中,提供了非常丰富的数据库结构、分区和索引技术,很多的连接方法。为此通常一个SQL语句经过优化器优化之后会生成几个执行计划。虽然这些执行计划采用不同的访问路径、连接方法、连接顺序的组合方式,可以用不同的方法访问和处理数据,但是最后产生的结果都是相同的。其实数据库最终只执行一条执行计划。那么数据库会执行哪一条呢?这就要看Oracle数据库中定义的成本评估规则了。也就是说,要评估这些执行计划的成本,并选择其中成本最低的执行计划,优化程序依赖于组成SQL语句执行的单独操作的成本评估。这些评估要尽量的准确。在Oracle数据库中的成本评估模型,包含了数据库数据结构、对象级和系统统计数据的访问方法、性能信息等等。那么这个成本模型到底是如何运作的呢?笔者就以Oracle数据库推荐的成本模型CPU+IO成本模型来谈谈其运作机制以及维护的要点。
一、根据执行时间来评估运行成本。
在判断执行计划的优劣时,根据其执行所需要花费的时间来判断无疑是最快速的。而影响这个执行计划的时间主要有两个方面的因素。一是IO操作的数据和类型。因为数据库的大部分操作都要涉及到硬盘的读写。而从硬盘中读取速度与比内存中读取速度要慢的多。为此IO操作的数据和类型对于SQL执行计划的时间具有很大的影响。二是CPU的周期数,这也是影响SQL语句执行计划时间的重要因素。当然还有其它方面的因素,不过其他因素对于执行计划时间关系不大。
更多精彩
赞助商链接