优化器是SQL处理引擎的核心,Oracle服务器支持两种优化器:基于规则的优化器和基于成本的优化器。
基于规则的优化器一Rule Based(Heuristic) Optimization(简称RBO);Oracle在基于规则的优化器中采用启发式的方法(Heuristic Approach)或规则(Rules)来生成执行计划。
基于成本的优化器一Cost Based Optimization(简称CBO):Oracle把一个成本引擎(CostEngine)集成到数据库内核中,用来估计每个执行计划需要的成本,该成本将每个执行计划所耗费的资源进行量化,从而CBO可以根据这个成本选择出最优的执行计划。一个查询耗费的资源可以被分成3个基本组成部分:I/O成本、CPU成本、Network成本。
数据库使用何种优化器主要是由可变参数Optimizer_mode决定的。该参数可取值为:
RULE为使用RBO优化器。
CHOOSE则是根据实际情况,如果数据字典中包含被引用的表的统计数据,即引用的对象已经被分析,则就使用CBO优化器,否则为RBO优化器。
ALL_Rows为CBO优化器使用的第一种具体的优化方法,是以数据的吞吐量为主要目标,以便可以使用最少的资源完成语句。
FIRST_Rows为CBO优化器使用的第二种具体的优化方法,是以数据的响应时间为主要目标,以便快速查询出开始的几行数据。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28671717/viewspace-755491/
,如需转载,请注明出处,否则将追究法律责任。