网站大量收购闲置独家精品文档,联系QQ:2885784924

[IT认证]Oracle Performance Tuning 入门手册 V12.doc

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

ORACLE SQL Performance Tuning 1 序言 3 2 影响SQL Performance的关键因素和配置: 3 2.1 关于执行计划 3 2.2 ORACLE优化器 3 2.3 结合BenQ Oracle ERP 6 2.4 跟踪 SQL实际运行的Cost 7 2.5 小结 7 3 SQL语句的Tuning经验分享: 8 3.1 绝大多数情况下not exists比not in 效率高 8 3.2 UNION ALL效率比UNION高很多 8 3.3 一些很耗资源的SQL操作,在不必要的情况下不要使用 8 3.4 通常联接查询比子查询的效率要高很多 10 3.5 用table 索引(index)栏位去做Table间的关联,可避免费时的全表扫描 10 3.6 在View中尽量不要使用 Package/function 来得到栏位值, 11 3.7 通过ROWID访问表 11 3.8 必要时,可在Oracle Standard Table上加索引 12 3.9 合理排列WHERE子句中的连接顺序. 12 3.10 合理排列FROM中的表名 13 3.11 用WHERE子句替换HAVING子句 13 3.12 关于使用索引(Index)的一些注意点 13 3.13 识别 “低效运行”的SQL语句 15 3.14 一些特别的用法,不一定对提升Performance有效,此处仅列其使用方法,以供借鉴 15 3.15 Query以外的SQL语句的Tuning 18 4 SQL语句的Tuning建议步骤 18 5 金玉良言 19 序言 SQL_Performance_Tuning_Report_1.0.doc版本进行了更新和补充,由PTEG(Performance Tuning Expert Group, 2006-10-5成立)小组进行重新整理,生成了该1.1版本。 这份文档主要将影响SQL Performance的因素做个基础的阐述,再将大家在平时写SQL积累的经验做个总结。 希望本文可以成为一份有价值的入门级资料。 影响SQL Performance的关键因素和配置: Oracle Database上的设置对Performance的影响很大,如Shared Pool Size、Buffer Cache Size、SGA Structures、Database I/O Configuration、Rollback Segments等等,这些是DBA要更据实际状况Tunning的部分,我们暂不详细讨论,DBA可对这块进行补充; 这份文档我们将重点放在影响SQL执行效率的一些关键因素和设置上。 关于执行计划 我们在平时工作中用到大量的View,View中SQL的写法对的影响很大,首先有必要了解一条SQL语句是如何被执行的。当SQL语句进入Oracle的缓存后,在该语句准备执行之前,DBMS将执行下列步骤: SQL语法检查:检查SQL语句拼写是否正确和词序。 SQL语义分析:核实所有的与数据字典不一致的表和列的名字。 生成执行计划:使用优化规则和数据字典中的统计表来决定最佳执行计划。 建立可执行的二进制代码:基于执行计划,Oracle生成二进制执行代码。 抓取并返回需要的数据。 其中第三步生成执行计划非常关键,所谓执行计划,就是对一个查询任务,做出一份怎样去完成任务的详细方案。对于查询而言,我们提交的SQL仅仅是描述出了我们的目的,但Oracle内部怎么去得到这些数据,是由数据库DBMS来决定的。 所以执行计划产生的好坏直接影响SQL 运行的Performance。我们平时对SQL做一些Tuning,为了得到相同的数据而去尝试用不同的SQL写法,目的就是能让Oracle根据你的语句产生一个更好的执行计划,从而得到更好的。 ORACLE优化器 在不同的情况下,同一条SQL可能有多种执行计划。但理论上在某一时点,一定只有一种执行计划是最优的、花费时间是最少的。执行计划的工作是由优化器(Optimizer)来完成的, 那优化器是依据什么讯息去创建出最合理的执行计划?回答这个问题前先要了解一下ORACLE的优化器: ORACLE优化器的优化方式 ORACLE优化器的优化方式有两大类,即基于规则的优化方式(Rule-Based Optimization,简称为RBO)和基于代价的优化方式(Cost-Based Optimization,简称为CBO)。 RBO方式:优化器在分析SQL语句时,根据数据库中表和索引等定义信息,遵循的是Oracle内部预定的一些规则。比如我们常见的:当一个where子句中的一列有索引时去走索引而不走全表扫描。 CBO方式:依词义可知,它是看语句的代价(Cost)了。基于代价的查询,数据库根据搜集

文档评论(0)

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

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

1亿VIP精品文档

相关文档