cbo和rbo的若干界定方法.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
cbo和rbo的若干界定方法

一 CBO中COST的计算公式 CBO从9i开始引入CPU成本评估,这个评估不是动态的,不会根据系统负荷变化 其成本评估公式大致如下,供参考: COST = ( #srds * sreadtm + #mrds * mreadtm + #cpucycles / cpuspeed ) / sreadtm 各参数含义: #srds number of single block reads sreadtm single block read time #mrds number of multi block reads mreadtm multi block read time #CPUCycles number of CPU Cycles CPUspeed CPU cycles per second 二 CBO中COST的计算公式2 CBO的成本计算主要由物理I/O组成,实际公式为: COST = Phyiscal Disk IO + CPU/1000 + NetIO*1.5 IO表示物理I/O请求, CPU表示逻辑I/O请求, NetI/O表示通过数据库连接访问远程数据库的逻辑I/O请求. CBO会尝试计算所有可能执行计划的物理I/O,保留只需要最小物理I/O的计划. 关于CBO的一些实验: /250228.html 三 关于RBO的运算优先级 /lovexueer/archive/2003/12/31/21856.aspx RBO遵循简单的分级方法学,RBO使用15种级别要点,当接收到查询,优化器将评估使用到的要点数目,然后选择最佳级别(最少的数量)的执行路径来运行查询,15个要点级别如下: 规则1 .使用ROWID的单独记录 规则2 .使用簇连接的单独记录. 规则3 .使用散列簇主键的单独记录. 规则4 .使用主键的单独记录. 规则5 .簇连接. 规则6 .散列簇连接 规则7 .索引簇主键. 规则8 .复合主键. 规则9 .单列主键. 规则10 .索引列的结合范围查找. 规则11 .索引列的非结合范围查找. 规则12 .排序合并连接. 规则13 .索引列的最大max或min 规则14 .索引列的order by. 规则15 .全表扫描. 关于CBO/RBO一些需要特别关注的地方: /oracle/tuning/cbo.htm 关于oracle 10g的统计信息 /global/cn/pub/articles/lewis_cbo.html Cost Based Optimizer - Common Misconceptions and Issues 基于成本的优化器?—— 一般错误概念和问题 Introduction 介绍 本短文着意于消除一些关于基于成本的优化器(CBO)的错误说法,强调一般的错误和问题。 Background 背景 为了执行任何一个SQL语句,Oracle都要先导出一个“执行计划(execution plan)”。它基本上就是Oracle如何检索出符合给定SQL语句要求的数据的执行计划。 Oracle7和Oracle8 都有两种可以为SQL语句导出执行计划的优化器: - 基于规则的优化器(RBO) ? 继承自Oracle6,它使用一系列严格的规则来决定每个SQL语句的执行计划。如果你知道这些规则,你可以构造一个SQL查询使其以指定的方式访问数据。表的内容对于执行计划没有影响。 ? 这个优化器已经不再被增强了,所以不能使用很多oracle8的特性。 - 基于成本的优化器(CBO) ?? 从Oracle7开始引入,该优化器尝试找到最低成本的访问数据的方法,为了最大的吞吐量或最快的初始响应时间。计算使用不同的执行计划的成本,并选择成本最低的一个。关于表的数据内容的统计被用于确定执行计划。 Fundamental Points 基本点 对于每个SQL语句,都有很多可能的执行计划。 “最佳计划”永远是“最佳计划”,无论它如何到达。 ?最佳计划可以由两个意思: ???1? 此计划使用最小的资源来处理此语句涉及到的所有行。 [叫做ALL_ROWS] ?????? 2? 此计划以最短的时间返回这个语句的第一行 。?? [叫做FIRST_ROWS] ?? CBO不理解应用的相关特性,也不能完全理解关联表之间的复杂关系的影响。仅有有限的信息可以用来确定最佳计划。 ?CBO通过计算不同执行方案的估计成本来确定最佳计划,并选用最低成本的计划。因为这个关系到相关成本的假设,所选的计划不一定是真的最好的计划。这种情况经常被当作BUG报告给oracle 技术支持,因为 CBO没有为一个指定方案选择一个最佳的计划。人们通常可以证实因为给定的输入统计试有效的并且缺省的“成本”被牵扯进来

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档