欢迎来到天天文库
浏览记录
ID:9090561
大小:34.50 KB
页数:4页
时间:2018-04-17
《计算机论文oracle数据库的优化1》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、Oracle数据库的优化陈丽红(延边广播电视大学)林常君(交通银行延边分行)摘要:本文提出了一种优化Oracle数据库的方法。Oracle中SQL语句的执行过程可分为解析(Parse)、执行(Execute)和提取结果(Fetch)三步,此方法就是通过对SQL语句在Oracle数据库中优化执行的三个过程来提高Oracle数据库的性能。关键词:数据库;扫描;多表联结;子查询1.如何优化Parse1.1SQL语句的Parse处理步骤:1)计算语句值2)共享池中有无与此语句值相同的语句?3)共享池中有与此语句字符完全匹配的语句?4)准备要运行的SQL语句5)为新语句在共享池中创建空间6)将
2、语句存放在共享池中7)修改共享池图,标明语句的值和在共享池中的位置8)执行准备好的SQL语句最理想的是,语句只执行1、2、3和8步来进行处理。不经过2、3步来测试被传给Oracle的语句要使用1~8步进行处理。只经过1、2、3、8的SQL语句要比经过1~8步的语句更为有效。1.2在共享池中重用SQL语句当SQL语句被传递给Oracle处理时,其秘诀是重复使用已经在共享池中的语句,而不是让Oracle在接受语句时去准备新的语句。前面表明,如果Oracle接受了一个与共享池中的语句相一致的语句,就重用共享池中的语句。Oracle提供在数据库中存储代码的能力。当应用系统开始运行时,从数据库
3、中读取代码(可用PL/SQL语句编制)并像其它语句那样传递到共享池中去处理。从数据库中取出的代码是编译过的并驻留在共享池中。2如何优化Execute和Fetch2.1避免无计划的全表扫描全表扫描连续从表读取所有数据,而不管数据是否与查询有关。避免不必要的全表扫描有两个充足理由:1全表扫描没有选择性。2通过全表扫描读取的数据很快从SGA的缓冲区移走(如果正在扫描的表不是“高速存储”的表)在基于规则优化的情况下,如果下列任何条件在SGA语句出现,就要对一个表进行全表扫描。1)该表无索引2)对返回的行无任何限定条件(如无Where语句)3)对数据表与任何索引主列相对应的行无限定条件。例如,
4、在City-State-Zip列上创建了三列复合索引,那么仅对State列有限定条件的查询不能使用这个索引,因为State不是索引的主列。4)对索引主列的行有限定条件,但条件或者是NULL或者是不相等。例如,City列上存在索引,在所有下列情况下都不会使用索引。WherecityisnullWherecityisnotnullWherecity!=‘jilin’5)对索引主列的行有限定条件,但条件在表达式里使用。例如,如果在City列上索引,那么限定条件WhereCity=‘jilin’可以使用索引。然而,如果限定条件是WhereUPPER(City)=’liaoning’那么不会使
5、用City列上的索引,因为City列在UPPER函数里。如果将City列与文本字符串联结在一起,也不会使用索引。例如,如果限定条件是WhereCity
6、
7、’x’like‘jilin%’那么不会使用City列上的索引。6)对索引主列的行有限定条件,但条件使用Like操作以及值以‘%’开始或者值是一个赋值变量。例如,在所有下列情况下都不会使用索引:WhereCitylike‘%aonin%’WhereCitylike:City_Bind_Variable如果表小、索引列无选择性,基于开销的优化器可能决定使用全表扫描。2.2只使用选择性索引索引的选择性是指索引列里不同值的数目与表中记录数的
8、比。如果表有1000个记录,表索引列有950个不同值,那么这个索引的选择性就是950/1000或者0.95。最好的可能性选择是1.0。依据非空值列的唯一索引,通常其选择性为1.0。如果使用基于开销的最优化,优化器不应该使用选择性不好的索引。索引的选择性是指索引列里不同值的数目与表中记录数的比。如果表有1000个记录,表索引列有950个不同值,那么这个索引的选择性就是950/1000或者0.95。最好的可能性选择是1.0。依据非空值列的唯一索引,通常其选择性为1.0。2.3管理多表联结Oracle提供了3个联结操作:NESTEDLOOPS、HASHJOIN和MERGEJOIN。MERG
9、EJOIN是一组操作,在所有行被处理完之前,它不返任何记录给下一操作。NESTEDLOOPS和HASHJOIN是行操作,因此会很快将第一批记录返回给下一个操作。在每个联结选项里,必须执行一些步骤以获取最好的联结性能。如果没有适当地优化联结操作,那么联结所需的时间也许随着表的增长而呈指数级地增长。2.4管理包含视图的SQL语句如果查询包含视图,优化器有两种执行查询的方法:首先解决视图然后执行查询,或者把视图文本集成到查询里去。如果首先执行视图,那么首先完成全
此文档下载收益归作者所有