欢迎来到天天文库
浏览记录
ID:6321662
大小:213.37 KB
页数:13页
时间:2018-01-10
《oracle sql性能调优》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、学习报告ORACLESQL性能调优1序言22影响SQLPERFORMANCE的关键因素和配置:22.1关于执行计划22.2ORACLE优化器22.2.1ORACLE优化器的优化方式22.2.2优化器的优化模式(OptermizerMode)32.2.3Optimizermode优化模式级别的设定:32.2.4查看对象统计信息(objectstatistics)32.3结合BenQOracleERP42.3.1优化模式(OptermizerMode)42.3.2关于Gather52.4跟踪SQL实际运行的Cost52.5小结53SQL语句的TUNING经验分享:6
2、3.1绝大多数情况下notexists比notin效率高63.2UNIONALL效率比UNION高很多63.3一些很耗资源的SQL操作,在不必要的情况下不要使用63.4通常联接查询比子查询的效率要高很多73.5用table索引(index)栏位去做Table间的关联,可避免费时的全表扫描73.6在View中尽量不要使用Package/function来得到栏位值,83.7通过ROWID访问表93.8必要时,可在OracleStandardTable上加索引93.9合理排列WHERE子句中的连接顺序.93.10用Where子句替换HAVING子句93.11关于使用
3、索引(Index)的一些注意点103.11.1‘!=’,NOT操作将不使用索引.103.11.2‘
4、
5、’是字符连接函数.就象其它函数那样,停用了索引.103.11.3相同的索引列不能互相比较,这将会启用全表扫描.103.11.4避免在索引列上使用计算.113.11.5基于成本的优化器(CBO)会对索引的选择性进行判断,来决定是否使用索引113.11.6Index信息的重新统计113.12识别“低效运行”的SQL语句11学习报告1序言BenQSaleOffice自OracleERP上线后,随着资料量的日益加大,目前BQE,BQC,BQP这几个Site的Perfor
6、mance的问题都表现得越来越明显,Tunning得工作量也明显增加。考虑到影响OracleSQLPerformance的有很多方面,我们这次研究的Tunning先包括两个大方向:OracleDBConfiguration和SQLStatementTuning。这份文档主要将影响SQLPerformance的因素做个基础的阐述,再将大家在平时写SQL积累的经验做个总结。2影响SQLPerformance的关键因素和配置:OracleDatabase上的设置对Performance的影响很大,如SharedPoolSize、BufferCacheSize、SGAS
7、tructures、DatabaseI/OConfiguration、RollbackSegments等等,这些是DBA要更据实际状况取Tunning的部分,我们暂不详细讨论,DBA可对这块进行补充;这份文档我们将重点放在影响SQL执行效率的一些关键因素和设置上。2.1关于执行计划我们在平时工作中用到大量的View,View中SQL的写法对效率的影响很大,首先有必要了解一条SQL语句是如何被执行的。当SQL语句进入Oracle的缓存后,在该语句准备执行之前,DBMS将执行下列步骤:1.SQL语法检查:检查SQL语句拼写是否正确和词序。2.SQL语义分析:核实所有
8、的与数据字典不一致的表和列的名字。3.生成执行计划:使用优化规则和数据字典中的统计表来决定最佳执行计划。4.建立可执行的二进制代码:基于执行计划,Oracle生成二进制执行代码。5.抓取并返回需要的数据。其中第三步生成执行计划非常关键,所谓执行计划,就是对一个查询任务,做出一份怎样去完成任务的详细方案。对于查询而言,我们提交的SQL仅仅是描述出了我们的目的,但Oracle内部怎么去得到这些数据,是由数据库DBMS来决定的。所以执行计划产生的好坏直接影响SQL运行的Performance。我们平时对SQL做一些Tuning,为了得到相同的数据而去尝试用不同的SQL
9、写法,目的就是能让Oracle更据你的语句产生一个更好的执行计划,从而得到更好的效率。2.2ORACLE优化器在不同的情况下,同一条SQL可能有多种执行计划。但理论上在某一时点,一定只有一种执行计划是最优的、花费时间是最少的。执行计划的工作是由优化器(Optimizer)来完成的,那优化器是依据什么讯息去创建出最合理的执行计划?回答这个问题前先要了解一下ORACLE的优化器:2.2.1ORACLE优化器的优化方式ORACLE优化器的优化方式有两大类,即基于规则的优化方式(Rule-BasedOptimization,简称为RBO)和基于代价的优化方式(Cost-
10、BasedOptimiz
此文档下载收益归作者所有