优化器的基础知识

  1. 优化器的模式

    优化器的模式用于决定在Oracle中解析目标SQL时所用优化器的类型,以及决定当使用CBO时计算成本值的侧重点,这里的“侧重点”是指当使用CBO来计算目标SQL各条执行路径的成本值时,计算成本值的方法会随着优化器模式的不同而不同。

    在oracle数据库中,优化器的模式是由参数OPTIMIZER_MODE的值来决定的,OPTIMIZER_MODE的值可能是RULE,CHOOSE,FIRST_ROWS_n(n=1,10,100,1000),FIRST_ROWS或ALL_ROWS.

    OPTIMIZER_MODE的各个可能值的含义为如下所示:

    (1)RULE

    RULE表示oracle将使用RBO来解析目标SQL,此时目标sql中所涉及的各个对象的统计信息对于RBO来说没有任何作用

    (2)CHOOSE

CHOOSE是oracle 9i中OPTIMIZER_MODE的默认值,它表示oracle在解析目标sql时到达时使用RBO还是使用CBO取决于该SQL中所涉及的表对象是否有统计信息。具体的说,只要该SQL中所涉及的表对象中有一个统计信息,那么oracle在解析该sql时就会使用CBO;如果该SQL中所涉及的所有表对象均没有统计信息,那么此时oracle将会使用RBO。

(3)FIRST_ROWS_n(n=1,10,100,1000)

这里FIRST_ROWS_n(n=1,10,100,1000)可以是FIRST_ROWS_1,FIRST_ROWS_10,FIRST_100,FIRST_ROWS_100和FIRST_ROWS_1000中任意一个值,其含义是指当OPTIMIZER_MODE的值为FIRST_ROWS_n(n=1,10,100,1000)时,oracle会使用CBO来解析目标SQL,且此时在技术该SQL的各执行路径的成本值时侧重点在于以最快的响应速度返回头n(n=1,10,100,1000)条记录。

当OPTIMIZE_MODE的值为FIRST_ROWS_n(1,10,100,1000),Oracle会把那些能够以最快的响应速度返回头n(n=1,10,100,1000)条记录所对应的执行步骤的成本值修改成一个很小的值(远远小于默认情况下CBO对同样执行步骤所计算出的成本值)。这样Oracle就既没有违背CBO选取执行计划的总原则(成本值最小),同时又兼顾了FIRST_ROWS_n(n=1,10,100,1000)的含义。

(4)FIRST_ROWS

FIRST_ROWS是一个在oracle 9i中就已经过时的参数,它表示oracle在解析目标SQL时联合使用CBO和RBO,这里联合使用RBO和CBO的含义是指在大多数情况下,FIRST_ROWS还是会使用CBO来解析目标SQL,且此时CBO在计算该SQL的各条执行路径的成本值时侧重点在于以最快的响应速度返回头几条记录(类似于first_rows_n);但是,当出现了一些特殊情况时,FIRST_ROWS转而会使用RBO中的一条内置的规则来选取执行计划而不再考虑成本。比如当OPTIMIZER_MODE的值为first_rows时有一个内置的规则,就是如果oracle发现能用相关索引来避免排序,则oracle就会选择该索引对应的执行路径而不再考虑成本,这显然是不合理的。与之对应的,在optimizer_mode的值为first_rows的情形下,你会发现索引全扫描出现的概率比之前有所增加,这是因为走索引全扫描避免排序的缘故。

(5)ALL_ROWS

all_rows是oracle 10g以及后续oracle数据库版本中optimizer_mode的默认值,它表示oracle会使用CBO来解析目标sql,且此时CBO计算该sql的各条执行路径的成本值的侧重点在于最佳的吞吐量(即最小的系统I/O和CPU资源的消耗量)

实际上,成本的计算方法随着优化模式的不同而不同,主要体现在ALL_ROWS和FIRST_ROWS_n(n=1,10,100,1000)对成本值计算方法的影响上。当优化器模式为ALL_ROWS时,CBO计算成本的侧重点在于最佳吞吐量,当优化器模式为first_rows_n(n=1,10,100,1000)时,CBO计算成本侧重点会变以最快响应速度返回头n条记录。这意味同样的执行步骤,在优化器模式为all_rows时和FIRST_ROW_n时CBO分别计算出来的成本值会存在巨大差异,这也就意味着优化器的模式对CBO计算成本(进而选择执行计划)有着决定性的影响。

时间: 2024-08-03 16:34:24

优化器的基础知识的相关文章

Oracle优化器的基础知识(二)

一. 表连接 顾名思义,表连接就是指多个表之间用连接条件连接在一起,使用表连接的目标SQL的目的就是从多个表获取存储在这些表中的不同维度的数据.体现在SQL语句上,含表连接的目标SQL的from部分会出现多个表,而这些SQL的where条件部分则会定义具体的表连接条件. 当优化器解析含表连接的目标SQL时,它除了会根据目标SQL的SQL文本的写法来决定表连接的类型之外,还必须决定如下三件事情才能得到最终的执行计划. 1.表连接顺序 不管目标SQL中有多少个表做表连接,Oracle在实际执行该SQ

SQL Server 优化器+SQL 基础

http://www.cnblogs.com/shanksgao/tag/%E4%BC%98%E5%8C%96%E5%99%A8/ http://www.cnblogs.com/double-K/category/759248.html http://www.cnblogs.com/zhijianliutang/category/636063.html http://www.cnblogs.com/lonelyxmas/p/4685085.html       stack生成          

Oracle_sql优化基础——优化器总结

优化器的基础: 1.Oracle里的优化器: 优化器是Oracle数据库中内置的一个核心子系统,优化器的目的就是按照一定的判断原则来得到它认为目标sql在当前情形下最高效的执行路径,也就是说是为了得到目标sql的执行计划. Oracle数据库的优化器分为:RBO和CBO两种类型: RBO:基于规则的优化器(在得到sql执行计划时,RBO所用的判断原则为一组内置的规则) CBO:基于成本的优化器(在得到sql执行计划时,CBO所用的判断原则为成本,它会从目标sql诸多可能的执行路线中选择成本值最小

DB基础知识

"数据库"这个陌生而又数据的东东,从进提高班第二年就开始接触,不管是做过的项目还是自考的学习加起来也有3遍了.这只是一个开始,软考又要对数据库进行全面的分析,那么现在就让我们再一次剖析它吧! 首先,从一副图中进行整体的把控:由于这不是第一次接触,所以就针对重难点进一步探讨.即:E-R模型.关系模型. 通过以上的图可以看出数据库技术基础主要包括两大部分即:基础和构成.现在就针对E-R模型和关系模型的转换及关系代数的介绍: 何为E-R模型? E-R图也称实体-联系图(EntityRelat

网站优化的艺术与科学之工具和基础知识

最近在阅读一本网站优化的书,名叫<深入理解网站优化:提升网站转化率的艺术与科学>,本书是对网站优化的4个学科(Web分析.网站易用性.在线营销和网站测试)的最佳实践.网站优化是一门新颖的艺术,结合前面这四门学科完成对网站的测试和分析,更好地吸引和转化访问者. 实施本书中的最佳实践和测试思路,就能以多种方式改进网站:吸引访问者,使他们经常回到网站中,改进转化率和成功的其他度量因素,最终改进在线业务的财务收入. 一.工具 1)Web分析工具 1.免费和便宜的分析工具:Google Analytic

python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding:utf-8from com.wenhy.crawler_baidu_baike import url_manager, html_downloader, html_parser, html_outputer print "爬虫百度百科调度入口" # 创建爬虫类class SpiderMai

linux基础知识&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;逻辑卷管理器(lvm)

*****什么是lvm:           lvm就是将几个物理的分区通过软件组合成为一块看起来是独立的大磁盘(vg),然后将这块大磁盘分成可使用的分区. 然后就可以格式化创建文件系统,最终可以挂载使用啦.   *****我们该如何创建lvm呢? 一.首先创建分区,将其id设为8e,如下图   二.然后创建pv      pv阶段有如下常用的命令 pvcreate : 将物理的分区创建为pv pvscan  : 查看磁盘里的所有pv的信息 pvdiplay :查看pv的状态 pvremove

【MySQL优化】MySQL 高并发配置优化基础知识

[MySQL优化]MySQL 高并发配置优化基础知识 MySQL的优化分为两个部分,一是服务器物理硬件的优化,二是MySQL自身(my.cnf)的优化. 一.服务器硬件对MySQL性能的影响 ① 磁盘寻道能力(磁盘I/O),以目前高转速SCSI硬盘(7200转/秒)为例,这种硬盘理论上每秒寻道7200次,这是物理特性决定的,没有办法改变. MySQL每秒钟都在进行大量.复杂的查询操作,对磁盘的读写量可想而知.所以,通常认为磁盘I/O是制约MySQL性能的最大因素之一,对于日均访问量 在100万P

【深度分解】听趣拍云产品经理剖析视频基础知识(2)

"随着技术的不断进步,视频技术的制作加工门槛逐渐降低,信息资源的不断增长,同时由于视频信息内容更加丰富完整的先天优势,在近年来已经逐渐成为主流.在基础知识(1)里面已经讲了模拟时代和数字化时代的视频技术.接下来将对视频编码与压缩.画面压缩.运动压缩.互联网视频应用的到来做一个详细的介绍." 视频编码与压缩 视频编码与压缩,是数字化视频非常重要的技术,以至于它直接影响到视频在各个领域的应用.如果没有视频编码技术的不断提高,我们今天也不可能在方方面面享受到视频的便利性. 首先,视频编码是一