浅析分布式数据库查询优化

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

分布式数据库查询优化

【摘要】本文针对分布式数据库查询优化进行了分析与探讨,讲述了其特点,与原理供相关计算机方面人员参考。

【关键字】分布式、数据、查询、优化

一、分布式数据库及其特点:

分布式数据库系统是物理学上分散而逻辑上集中的数据库系统。分布式数据库系统使用计算机网络将地理位置分散而管理和控制又需要不同程度集中的多个逻辑单位连接起来,共同组成一个统一大业的数据库系统。因此,分布式数据库系统可以看成是计算机网络与数据库系统的有机结合。

一个分布式数据库系统应该具有如下特点:数据的物理分布性、数据的逻辑整体性、站点自治性

二、分布式数据库查询基本概念

1.分布式数据库查询优化的研究意义:

分布式查询技术主要把用户提交的全局查询请求翻译为几个相关节点都可以识别的本地查询请求,以及把各个节点的查询结果汇总返回的问题,它包括分布式查询处理和分布式查询优化。分布式查询处理研究整个分布式查询处理的过程和策略;分布式查询优化研究查询策略的优化问题,即如何从多种方案中选择查询代价最少方案。

分布式查询处理作为分布式数据库研究主要问题之一,它是用户与分布式数据库之间的接口,在分布式数据库中由于数据的分布与冗余,使得数据在各站点间的传输代价成为查询处理的主要矛盾;另一方面,数据的分布与冗余也增加了查询的并发处理的可能性,从而可以缩短查询处理的响应时间,提高处理速度。因此,与集中式数据库相比,分布式查询处理增加了不少新内容与复杂性。

2.分布式查询处理的层次结构:

分布式查询处理按不同的层次执行,符合分布式数据库系统的层次结构。分布式查询处理可分为如下所示四个层次结构。

(1)查询分解

查询分解是将查询问题(如SQL语句)转换成一个定义在全局关系上的关系代数表达式。这一层的做法与集中式DBMS相同,因为并未涉及分布问题。本层转换所需要信息在全局概念模式中得到。

(2)数据本地化

数据本地化是把一个在全局关系上的查询进行具体化到合适片段上的查询。这一变换所需要信息在分片模式和片段的分配模式中获得。

(3)全局优化

全局优化输入是分片查询,全局优化是找出分片查询的最佳操作次序,包括使得代价函数最小。全局优化一个重要方面是关于连接操作的优化,全局优化处理层输出是一个优化的、片段上的关系代数查询。这层转换所需要信息来自数据库的统计信息,包括各站点片段统计信息、资源信息和通信信息等。

(4)局部优化

局部优化由与查询有关片段的各个站点执行。它由该站点上的DBMS进行优化,采用集中式数据库系统中查询优化的算法,所需要信息来自于局部模式。

分布式查询优化通常在分布式查询层次结构中的数据本地化层和全局优化层。数据本地化阶段一般采用的是基于关系代数等价变换的优化算法。而全局优化阶段采用的算法,可具

体分为基于半连接算法的查询优化和基于直接连接算法的查询优化两大类。

3.分布式数据库数据库查询优化的一般过程:

分布式查询处理问题是由E-Wong首先提出的,分布式查询处理的基本思想认为分布式查询处理是数据传递和局部处理相交织的过程,分布式查询处理策略由数据传递策略与局部处理策略组成;分布式查询处理的过程实质是利用数据传递策略和局部数据处理策略,把分布查询转化为局部查询的过程。

分布式数据库中的查询过程可分为逻辑分解、评议转换和优化组合几分。分布式数据库系统中,用户可以用全局查询评议对多个数据库同时进行查询,即为全局查询。全局查询一般经过以下几个过程:

首先,对全局查询进行逻辑分解成几个子查询,每个子查询对应一个局部数据;其次,若全局查询评议与局部查询评议不同,则进行语言的等价转换;最后,各个子查询的结果优化组合后返回。

不同的查询分解对应不同的系统性能,因此为了达到优化系统性能,需要相应查询优化器来确定一个相对较好的执行计划,最后启动查询计划。

4.分布式数据库查询优化的衡量标准:

一个查询策略的选择是以执行查询的预期代价为依据的,由集中式系统大都运行在单个处理器的计算机上,所以查询执行总代价为CPU代价加I/O代价之外。分布式查询优化可用CPU代价、I/O代价、通信代价3个参数来徇,总代价为三者之和。在分布式数据库系统中,常以两种不同的目标来考虑查询优化:

1.以总代价最小为标准,除了CPU代价和I/O代价之外,还包括数据通过网络传输

的代价。

2.以每个查询的响应时间最短为标准。响应时间就是从接收查询到完成查询所需要

的时间。它既与通信时间有关,又与局部处理时间有关,而通信费用与所传输的数

据量和通信次数成正比。

5.分布式数据的查询优化策略:

一般来说,在分布式数据库中的查询优化主要考虑以下几种:

1.操作执行的顺序:操作执行顺序的改变主要指关系运算及集合运算的改变,它们常

常对铁性能产生重要的影响。

2.关系的存取方法:在关系数据库系统中,关系或使用索引,如果关系中90%的要

被访问,则扫描整个关系是较好的;如果只有30%的被访问,则使用索引是更为

有效的方法。

3.操作的执行算法(尤其是连接操作):连接操作是将两个关系在指定的公共属性上

以相同值为依据进行合并,连接操作通常有多种:自然连接、造价连接、外连接和

半连接等。

4.不同站点间数据流动的顺序:在多站点中,合理地选择数据的流向,可以大大减少

通信量,以便达到减少查询代价的目的。

三、常用的分布式数据库的查询优化策略:

1.基于关系代数等价变换的优化算法:

基于关系代数等价变换的优化算法是一种既能减少操作量又能减少操作次数的算法。

基于关系代数等价变换优化算法的基本原理:把查询问题转变为关系代数表达式,分析得到查询树(语法树),进行从全局到片段的变换得到基于片段上的查询树,然后利用关系代数等价变换规则的优化算法,尽可能先执行选择和投影操作。这样,一方面可以减少其后操作的操作量,另一方面可以减少操作次数。对该查询树进行优化,从而达到查询优化的目的。

关系代数等价变换规则的优化算法:利用关系代数等价变换规则,把查询树中连接和合并操作尽可能上提(向树根方向移)。选择和投影操作尽可能下移(向树叶方向移)到片段的定义处。这就是说,尽可能先执行选择和投影操作,后执行连接和合并操作。经过选择和投影操作不但可以减少其后操作的操作量,而且还可以减少操作次数。

2.基于半连接操作的查询优化算法:

基于半连接操作的查询优化的思想是经过半连接操作,可减少操作关系的数据量,从而减少站点间数据的传输量。

基于半连接操作的查询优化的基本思想:数据以整个关系在网络中传输,这显然是一种冗余的方法,在一个关系传输到另一场地后,并非每个数据都参与连接操作或都是有用,因此,不参与连接的数据或无用的数据不必在网络中来回传输。基于半连接的优化策略的基于原理就是采用半连接操作,在网络中只传输参与连接的数据。连接查询的优化问题几乎是分布式数据库的分布式查询优化算法的全部,在分布式数据库中连接查询的主要手段是半连接技术,各种不同算法的差异主要是在连接顺序上,即在保证结果一致的情况下,以什么样的顺序将这些表连接起来最优。优化的对象一般数据传输量的总和。

3.基于直接连接操作的查询优化算法:

基于直接连接操作的查询优化是一种完全在连接的基础上考虑查询处理的策略:有时直接连接也可能会产生好的效果,特别是当有以下情况时:

a)查询目标表中的属性很少,也不是某连接条件属性。

b)半连接的缩减效果较差时。

究竟用直接连接还是半连接方案,取决于数据传输和局部处理的相对费用。一般,如果认为传输费用是主要的,那么采用半连接策略比较有利,如果认为局部处理费用是主要的,则采用直接连接策略比较有利。

四、SDD_1算法:

1.SDD_1概述:

SDD-1算法采用了半联接程序处理联接操作}zs}。它的查询优化就是对逻辑关系使用基本的运算(如选择,投影,半联接)操作来缩减。它有五个主要特征,首先,采用半联接是最主要的,其次,各个局部站点没有重复,也不进行分片。此外,在它的代价计算中,不考虑最后一个站点传送代价。这是由于在它的查询策略中,当使用半联接来缩减操作数关系的基数,当最大限度的缩减以后,把所有关系送到可执行查询的站点上,这个站点不一定是查询所要求的结果站点。譬如说,若S是结果站点(经半联接缩减后建立的),;是查询要求的站点,S} I可能相同,可能不同,若不相同,则还有一次传送代价将S送到I。最后它还能同时减少最小化总时间和响应时间。

SDD-1算法有两部分组成:基本算法和后优化。基本算法基于爬山算法,是爬山算法的

相关文档
最新文档