Oracel数据库表连优化方法.docVIP

  • 2
  • 0
  • 约3.17千字
  • 约 7页
  • 2018-07-04 发布于福建
  • 举报
Oracel数据库表连优化方法

Oracel数据库表连接优化方法   [摘 要]本文主要介绍了Oracle数据库的表连接相关的类型与方法,并通过连接方法优化与连接方法避免两个方面给出了在数据库优化过程中常用的一些技术,通过这些技术能对数据库的查询优化器在连接方式的策略上施加影响,使表连接按照更高效的方式执行,从而达到性能优化的目的。 中国论文网 /1/viewhtm  [关键词]嵌套循环哈希连接排序合并优化   中图分类号:TP392; 文献标识码:A 文章编号:1009-914X(2015)09-0388-01   Oracle查询优化器要确定多张表的连接顺序和连接方法,目的是通过尽早的过滤不需要的数据,减少要处理的数据量。当SQL语句引用多张表时,查询优化器不仅要确定每张表的访问路径,而且需要确定这些表的连接顺序和连接方法。   一、表连接的类型   Oracle有很多种逻辑连接类型,这些连接类型并不互相排斥,一个指定的连接可能会符合几个不同的连接类型。表连接类型主要有以下几类:   (一)内连接使用比较运算符进行表间某些列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。根据所使用的比较方式不同,内连接又分为等值连接、自然连接(不包括重复属性)和不等连接三种。   (二)外连接分为左外连接、右外连接和全外连接三种。与内连接不同的是,外连接不只列出与连接条件相匹配的行,而是列出左表(左外连接时)、右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的数据行。?   (三)交叉连接没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积,是一种将一张表的所有记录与另外一张表的所有记录进行组合的操作,一般很少用。   (四)自连接是一种特殊的条件连接,表跟自己进行连接,寻找匹配的记录。   层次连接是一种特殊的自连接,这种连接中一张表内的父子关系被表现在一种层次体系中。   (五)反连接是一张表中的记录未与其他表中的记录匹配,则返回这些记录。   (六)半连接时一张表中的和其他表中的记录相匹配的记录被返回,但是外表仅返返回一行记录,不管内表有多少条记录与之匹配。   二、表连接方法   在Oracle中,无论逻辑连接的分类是什么,Oracle在处理表之间的连接时有三种方法:嵌套循环连接,排序合并连接,哈希连接(散列连接) ,不管目标SQL中有多少个表做表连接,在实际执行该SQL时都只能先两两做表连接,再依次执行这样的两两表连接过程,直到目标SQL中所有的表都已连接完毕,因此优化器在表连接的过程中就是根据一定的环境对上述三种方法做出最优选择的过程。在不同的环境中,每一种连接都有可能是最优的,但是优化器一定能够了解这环境,否则就需要对优化器做相应的调整才行。   循环嵌套连接处理的两个表一个被称为外部循环,也就是驱动表和内部循环。Oracle会选定一张表做为驱动表,然后遍历驱动表中的每一行,根据连接条件去匹配第二张表中的行。   排序合并连接在处理的时候两个数据集都会被读出来,并按照连接条件的字段进行排序,当这些操作完成时,两个工作区的内容就会被合并。排序合并连接一般不常使用,因为大多数情况下不如嵌套循环连接和哈希连接,但是这个连接方法也是必要的,因为它支持所有的连接类型。   哈希连接处理的两个数据集分别称为构造输入和探测输入。构造输入为左节点,探测输入为右节点。构造输入的每行记录都会在内存或临时空间中构造哈希表,当哈希表保护构造输入的所有数据时,探测输入的每行记录都会被拿来对哈希表进行探测以找出符合连接条件的记录。   三、表连接的优化方法   选择正确的连接方法只是优化连接的良好开始,而不是完结,任何方法的连接都可以通过调优索引和内存而变得更优。表连接的优化主要从两个方面入手,一种针对连接方法进行具体优化,一种是对连接方法的避免,毕竟表连接代价很高。   优化嵌套循环连接的关键是确保对内部表的索引查找是高效的,这意味着确保索引具有尽可能的最高选择性。   优化排序合并连接和哈希联接的关键是内存,如果没有足够的PGA内存供排序、合并或散列操作在内存中完成,这两种连接的性能会显著的下降。如果这些操作都能在内存里构造,这被认为是最优的操作。如果操作不能在内存中完成,就需要一个或多个临时,它们会被写入磁盘并从磁盘读回。随着磁盘读写次数的增加而性能下降,对散列连接和排序合并连接来说,排序合并连接需要更多的内存,只有增加内存容量到足以支持在内存中完成整个连接操作的情况下,才能通过再次增加内存来提高排序合并的性能,而在内存不足以完成连接操作时,排序合并连接性能会急剧下降,而散列连接的性能会随着内存的降低而降低。   除了连接方法的本身优化之外,连接方法的具体选择还受以下三个方面影响:一是优化器的目标即使用FIRST_ROWS还是ALL_

文档评论(0)

1亿VIP精品文档

相关文档