- 1、本文档共53页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle RDBMS优化-调整表连接汇
Oracle RDBMS优化-调整表连接 赵元杰 中程在线(北京)科技有限公司 2009.8 内容提要 表的访问方式; Oracle系统SQL优化器; 调整表连接; 表的访问方式 表的访问方式: 全表扫描-顺序读取每个数据块到末尾; Hash(散列)获取-使用符合散列主键来为带有匹配Hash表中的记录创建rowid ROWID访问-通过指定的rowid选定表的一个单记录: ROWID是最快的访问方式; Rowid是Oracle系统启动分配给表的每条记录的唯一地址; 表的访问方式 全表扫描: 顺序读取每个数据块到末尾,从中选择所有记录; 下面条件之一满足,Oracle采用全表扫描: 当表不存在索引时; 当查询语句不包含where语句时; 当查询中使用like以%开始时; 引用函数索引时; 当使用基于CBO且表中的记录很少时; 当参数optimizer_mode=all_rows时; 表的访问方式 HASH访问: Oracle 对多个表的Cluster采用Hash Cluster存储,这样两个表的记录存放在一个块内; Hash访问是通过一个符号主键进行Hash运算后得到散列值(Hash Value),该散列确定记录所在的块; 散列访问方法对于经常修改主符号键来说存在重定位记录的风险,所以建议在静态表的Cluster中使用散列访问方法(主键常改变不建议用); Oracle 的Cluster另见《9i 10g 分区与簇》文档。 表的访问方式 ROWID访问: ROWID访问是得到单个记录的最快方法; Oracle 系统为每个表的每条记录自动分配ROWID,包括OOOOOOFFFBBBBBBRRR : OOOOOO-对象的相对号; FFF-文件的编号; BBBBBB-块的编号; RRR-块中的记录号; 表的访问方式 索引访问方式: Oracle有多种索引-B树索引、位图索引等; Oracle 系统可使用下面索引,包括: 索引范围扫描; 单个索引扫描; 降序索引扫描; And_euql过滤器; 内容提要 表的访问方式; Oracle系统SQL优化器; 调整表连接; SQL优化器介绍 SQL优化器技术; 优化器模式; 基于规则的优化器调整; 基于成本的优化器调整(10g/11g); 设置优化器模式; 迁移到基于成本的优化器调整; SQL优化器介绍 SQL优化器技术: SQL优化器的目的是为SQL语句生成最快、消耗资源最少的执行计划; SQL优化器可以产生最快反应速度(First_rows模式),可产生最佳吞吐量的执行计划(all_rows模式) Oracle提供基于规则(RBO)和基于成本(CBO)的优化器模式; 设置optimizer_mode=choose时两种模式交替使用;一般可通过Alter session来设置模式,如: Alter session set optimizer_goal= xxx; SQL优化器介绍-RBO (略) 基于规则的优化器(RBO): 基本规则优化不使用表和索引的统计数据; RBO方法要探讨要实现最佳访问路径; RBO根据语句结构的不同来生成执行计划表; RBO采用迭代生成执行计划,并检查from后每个表以及表间连接方式,根据每个执行路径所消耗的成本进行排序,并选择最低的路径,下面是RBO步骤: 生成一个可执行计划列表(包含所有访问路径) ; 为每个执行计划指定级别数值; RBO选择级别低的计划; RBO对所有可连接的表与级别结果的连接作评估; 选择级别低的方法。 Select 语句的处理过程(略) SQL优化器介绍-RBO (略) RBO与SQL操作: RBO将SQL语句分为不同的级别,RBO根据这些级别确定执行计划: SQL优化器介绍-RBO (略) RBO的特性: 总是使用索引: 如果表有索引可用,则使用索引 ; 排序合并不使用索引; 总是从驱动表开始: From最后的表为驱动表; 总是不可避免情况下,才用全表扫描: RBO一般都用索引 ; 特别指定不用索引(HINT-提示); 任何索引都可以用: RBO用索引不一定好 ; 有时越简单越好: 8i之前系统可提供好的执行计划 ; 9i后不建议采用RBO; 10g建议采用 optimizer_mode = ALL_ROWS; SQL优化器介绍-CBO CBO的特性: 使用统计数据和数据字典来确定代价; CBO只是一个数字处理程序,处理: 基本表访问代价; 所有数据源的访问方法; 并行是否可用; 连接的顺序与方法; OPTIMIZER_MODE 可以设置: CHOOSE, FIRST_ROWS, 或 ALL_ROWS 10g/11g 默认为ALL_ROWS SQL优化器介绍-CBO CBO方法:
您可能关注的文档
- Introduction_to_Poka_YokeContinuous improvement to Zero Quality Control汇.ppt
- infor流程行业解决方案汇.pdf
- Interlink功能升级说明书V22.20100223汇.doc
- introduction_to_mongodb汇.ppt
- IOAS迁移服务器注意事项及相关流程汇.ppt
- Infinera DTN英飞朗DTN设备及其应用汇.ppt
- IPD智能预警发布系统(乡村智能广播控制器)可行性研究报告汇.doc
- Interwoven的项目投标方案-门户信息发布平台技术方案建议书汇.doc
- IMS接入设备培训资料-SOT600IAD汇.ppt
- iPhone商业模式研究汇.ppt
文档评论(0)