欢迎来到天天文库
浏览记录
ID:51504991
大小:3.20 MB
页数:61页
时间:2020-03-25
《《SQL优化培训》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、ORACLESQL培训概述SQL共享原则SQL优化的一般性原则不要让Oracle做得太多给优化器更明确的命令减少访问次数细节上的影响表的链接什么是好的SQL语句?尽量简单,模块化易读、易维护节省资源内存CPU扫描的数据块要少少排序不造成死锁ORACLE优化器介绍Oracle的优化器共有两种模式:RBO(基于规则)和CBO(基于成本)。CBO在ORACLE7引入,但在ORACLE8i中才成熟。ORACLE已经明确声明在ORACLE9i之后的版本中(ORACLE10G),RBO将不再支持。因此选择CBO是必然的趋势。RBO方式:优化器在
2、分析SQL语句时,所遵循的是Oracle内部预定的一些规则。比如我们常见的,当一个where子句中的一列有索引时去走索引。CBO方式:它是看语句的代价(Cost),这里的代价主要指Cpu和内存。优化器在判断是否用这种方式时,主要参照的是表及索引的统计信息。统计信息给出表的大小、有少行、每行的长度等信息。这些统计信息起初在库内是没有的,是通过对表进行分析后才出现的,很多时侯过期统计信息会令优化器做出一个错误的执行计划,因些应及时更新这些信息CBO和RBO作为不同的SQL优化器,对SQL语句的执行计划产生重大影响。以下提及的优化原则均基
3、于CRO的优化模式。SQL共享原理ORACLE将执行过的SQL语句存放在内存的共享池(sharedbufferpool)中,可以被所有的数据库用户共享。当你执行一个SQL语句(有时被称为一个游标)时,如果它和之前的执行过的语句完全相同,ORACLE就能很快获得已经被解析的语句以及最好的执行路径.这个功能大大地提高了SQL的执行性能并节省了内存的使用。SQL共享的三个条件当前被执行的语句和共享池中的语句必须完全相同(包括大小写、空格、换行等)两个语句所指的对象必须完全相同(同义词与表是不同的对象)两个SQL语句中必须使用相同的名字的绑
4、定变量(bindvariables)共享SQL语句注意:Oracle对两者采取的是一种严格匹配策略,要达成共享。SQL语句必须完全相同(包括空格、换行等)。能够使用共享的语句必须满足三个条件:①字符级的比较。当前被执行的语句和共享池中的语句必须完全相同。例如:SELECT*FROMATABLE;和下面每一个SQL语句都不同:SELECT*fromATABLESelect*FromAtable;②语句所指对象必须完全相同即两条SQL语句操作的数据库对象必须同一。③语句中必须使用相同命名的绑定变量。如:第一组的两个SQL语句是相同的,可
5、以共享;而第二组中两个语句不同,即使在运行时赋予不同的绑定变量以相同的值:●第一组selectpin,namefrompeoplewherepin=:blk1.pin;selectpin,namefrompeoplewherepin=:blk1.pin;●第二组selectpin,namefrompeoplewherepin=:blk1.ot_jnd;selectpin,namefrompeoplewherepin=:blk1.ov_jnd;什么叫做重编译问题什么叫做重编译?下面这个语句每执行一次就需要在SHAREPOOL硬解析一次
6、,一百万用户就是一百万次,消耗CPU和内存,如果业务量大,很可能导致宕库……如果绑定变量,则只需要硬解析一次,重复调用即可select*fromdConMsgwherecontract_no=32013484095139绑定变量解决重编译问题未使用绑定变量的语句beginforiin1..100loopexecuteimmediate'insertintoscott.testvalues('
7、
8、i
9、
10、')';endloop;end;使用绑定变量的语句beginforiin100..200loopexecuteimmediate'in
11、sertintoscott.testvalues(:x)'usingi;endloop;end;访问数据表的方式①全表扫描全表扫描就是顺序地访问表中每条记录。Oracle采用一次读入多个数据块(databaseblock)的方式优化全表扫描。②通过ROWID访问表ROWID包含了表中记录的物理位置信息。可以采用基于ROWID的访问方式情况提高访问表的效率。Oracle采用索引实现了数据和存放数据的物理位置(ROWID)之间的联系通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能的提高。SQLTunning
12、的重点SQL:insert,update,delete,select;主要关注的是select关注的是:如何用最小的硬件资源消耗、最少的响应时间定位数据位置SQL优化的一般性原则目标:减少服务器资源消耗(主要是磁盘IO);设计方面:尽
此文档下载收益归作者所有