分布式数据库查询优化算法研究与实现朱.docx

上传人:b****7 文档编号:26104899 上传时间:2023-06-17 格式:DOCX 页数:14 大小:233.08KB
下载 相关 举报
分布式数据库查询优化算法研究与实现朱.docx_第1页
第1页 / 共14页
分布式数据库查询优化算法研究与实现朱.docx_第2页
第2页 / 共14页
分布式数据库查询优化算法研究与实现朱.docx_第3页
第3页 / 共14页
分布式数据库查询优化算法研究与实现朱.docx_第4页
第4页 / 共14页
分布式数据库查询优化算法研究与实现朱.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

分布式数据库查询优化算法研究与实现朱.docx

《分布式数据库查询优化算法研究与实现朱.docx》由会员分享,可在线阅读,更多相关《分布式数据库查询优化算法研究与实现朱.docx(14页珍藏版)》请在冰豆网上搜索。

分布式数据库查询优化算法研究与实现朱.docx

分布式数据库查询优化算法研究与实现朱

分布式数据库查询优化算法研究与实现

【摘要】在分布式数据库中,查询处理方法的效率对系统的性能起着非常关键的作用,而在分布式数据库系统中,处理一个查询的代价主要是由进行通信的数据量来决定的,半连接是一种非常有效的工具(方法)来减少连接的代价,从而更好的减少通信的数据量。

在这样一个分布式系统中,我们有能力分散那些数据(经常被不同的用户终端使用的)在不同的物理位置,同时可以通过查询的方式组合来自于不同站点的数据,假如在一个比较合适的系统中多个数据副本被使用,这样分散的数据将会产生一个比较合理的查询相应时间。

关键词:

分布式数据库,查询优化,标记二次半连接

近年来,由于计算机硬件环境,特别是计算机网络通讯技术的迅速发展,以及地理上分散的公司、团体和组织对数据库应用的迫切需求,在集中式数据库系统成熟技术的基础上产生并发展了分布式数据库系统。

分布式数据库系统是数据库技术和网络技术两者相互渗透和有机结合的结果。

分布式数据库系统中的数据在逻辑上属于同一个系统,而在物理上却分布在计算机网络的不同结点上,并由一个分布式数据库管理系统统一管理。

分布式数据库管理系统是分布式数据库系统的核心,负责实现分布式数据库的建立、查询、更新、复制、维护等功能。

众所周知,数据库查询是数据库的核心操作。

关系型数据库技术在数据处理方面取得的巨大成功,很大部分归功于非过程化语言SQL的出现,简捷易用的查询语句大大提高了数据库开发和使用的效率。

关系数据库语言允许把一个非常复杂的查询用非常简洁的SQL语句来表示,隐藏了数据库底层的数据的物理组织细节,减轻了用户选择存取路径的负担。

数据库管理系统只需要用户提出“查什么”,而不需要用户解决“怎么查”,即具体的查询策略。

但是,在实际中,我们不仅要利用数据库管理系统根据SQL指令准确查询用户需要的数据,还需要充分考虑其查询效率的高低。

因此,查询效率是数据库管理系统必须面临的一大挑战。

于是,相应的查询优化技术便成了计算机技术最活跃的研究领域之一。

很多公交公司、物流公司、客运等公司都需要拥有一个能符合自己企业本身的信息化系统,这可以提高工作效率、节约成本。

还可以使企业逐步形成采购、营销、物流、金融、租赁、销售、维修、养护等生产服务各环节的高效信息管理能力。

通过企业信息化工作,逐步培育企业提供以技术、知识为基础的服务能力,形成企业竞争优势。

这就要求各个分公司能及时准确的了解其他分公司的情况,就是将分公司的数据及时的能在系统中有所反应。

这就对分布式数据库查询优化提出了更高的要求,如何准确的定位好在各个站点中的数据的分配才能达到最优化的查询是我们要解决的问题。

一、分布式查询处理的层次结构

分布式查询处理按照不同的层次结构执行,符合分布式数据库管理系统的体系截洪沟,分布式查询处理的层次结构如下所示:

1查询分解

第一层查询分解是将查询的问题(通常是SQL语句),转换成一个定义在全局关系上的关系代数表达式。

这一层的做法和集中式数据库管理系统一样,因为这层中并没有设计到分布问题。

本层转换所需要的信息在全局概念模式中获取。

2数据本地化

第二层数据本地化是把一个在全局关系上的查询,进行具体化,落实到合适的(使尽可能做到本地化或近地化)片段上的查询。

即将在全局关系上的关系代数表达式,变换为在相应片段上的关系代数表达式。

这一变换所需要的信息在分片模式和片段的分配模式中获得。

3全局优化

第三层全局优化的输入是分片查询,即在片段上的查询。

查询优化的目标在于寻找一个近于最优的执行策略。

前面两层已经通过消除冗余表达式,查询本地化或近地化等做了某些优化。

全局优化即是找出分片查询的最佳操作次序,包括使得代价函数最小。

代价函数一般是输入输出的代价和通信代价的综合。

不过,在一个基于广域网的分布式数据库管理系统,通信代价作为最为重要最为显著的因素,因为其有限的带宽使得通信费用比本地处理更为昂贵。

全局优化的一个重要方面是关于连接操作的优化,全局优化处理层的输出时一个优化的,片段上的关系代数查询。

本层转换所需要的信息来自数据库统计信息,包括各站点片段统计信息,资源信息和通信信息等。

4局部优化

最后一层是局部查询优化由拥有与查询有关的片段的各个站点执行。

在每一个站点上执行的子查询被称为局部查询。

它有该站点上的数据库管理系统进行优化,采用集中式数据库系统中查询优化的算法。

所需信息取自局部模式。

二、分布式查询优化中的相关技术

1、分布式数据库优化分类

查询优化的关键在于在所有可能执行策略的途径空间中选择一个最佳的点。

一种直接的方法就是从途径空间搜索所有可能途径,选择一种最佳的途径。

此种方法所需代价太高。

另一种减小代价的办法是随机策略,随机选择一种可能的途径。

这种执行途径可能不是最好的但它是相对比较好的,减小了内存和时间消耗的代价。

再一种减小代价的办法是使用启发式选择,在方法空间中缩小查找范围。

无论在集中式还是分布式系统中,通用的办法是减小中间关系的尺寸。

它首先执行一元操作,然后对二元操作进行排序。

在分布式系统中,一种重要的启发式选择是通过把通信代价与半联接结合来替换传统的联接操作。

2.另一种分类方法是根据优化与执行的不同时间来分:

静态和动态两种优化。

前者在执行前优化;后者在执行时优化。

静态查询优化在编译时进行,因此代价的分布存在于符合查询的各个步骤和阶段中,所以策略的中间关系的大小无法知道,只有在运行时才知道,必须使用数据库统计来估计代价的大小,而错误的估计将会影响子策略的优化途径。

动态查询优化在运行时进行。

在执行的任何一点,最佳的下一个操作的选择依赖于前一次操作执行的结果集的精确信息。

因此,数据库统计不必用来统计中间结果的大小。

但是,它们对选择第一个操作仍然有用。

动态查询的主要优点在于查询处理器可以获得中间关系的实际尺寸的大小,因此减小了错误选择的可能;主要缺点在于查询处理作为一种高昂代价的任务,在每次查询完需要重复执行。

因此这种办法只针对特定的查询。

混合查询优化则致力于提供静态查询优化的优点而尽量避免不精确估计带来的问题。

这种方式是基于静态方式的,但在出现中间关系的预测大小与实际大小有很大偏差时,可能进行运行时动态查询优化。

2、分布式数据库优化设计要考虑的问题

在分布式数据库系统中,一方面,许多相对独立的处理器可能参与数据库操作。

分布式数据库可能提供若干机会:

l)由于在处理一个问题时可以使用多台机器,并行以及加快查询反应速度的可能性增大。

2)由于数据可以在多个节点上存在副本,系统可能不会仅仅由于一个节点或部件发生故障而不得不停止处理。

另一方面,分布式处理增加了分布式系统各个方面的复杂性,因此即使是DBMS中最基本的组成部分的设计,也得重新考虑。

在许多分布式环境中,通信开销可能远大于处理开销,因此的问题是消息如何传送。

比如分布式提交和分布式封锁。

影响通信开销的因素主要是由于带宽开销迅速减小。

某些类型的数据属于电子方式管理的大对象,因此即使在通信开销较小时,以太字节的数据传输开销也是不能忽视的。

此外,通信开销常常不仅仅涉及数据传送,还有为数据传送做准备的各层协议、在接受方重建数据以及通信的管理。

这些协议各自都需要大量的计算。

尽管计算开销也在减小,与数据与关键数据库操作的传统单处理器操作相比,进行通信所需的计算可能仍不能忽视。

分布式数据库查询处理,分布特性的存在除带来通信开销外还影响到物理查询计划设计的复杂性和可选方案。

在选择物理查询计划时必须考虑的问题包括:

1)如果某个所需关系R有多个副本,那么应该从那个副本中获得R的值。

2)当在两个关系R和S上实施某个操作例如连接时,有多个可选方案而且必须选择其中之一时,一些可能的选项如下:

(a)可以将S复制到R所在节点,并在该节点执行计算。

(b)可以将R复制到S所在节点,并在该节点执行计算。

(c)可以将R和S复制到二者各自所在节点之外的第三个节点,并在该节点执行计算。

哪种选择最好,这依赖于多个因素,其中包括哪个节点上有可用的处理时间以及操作结果是否需要与第三个结点上的数据相结合等。

例如,如果我们计算

,那么可以将R和S都传送到T所在接点,并在该节点执行两个连接操作。

如果关系R有分布在若干节点上的片断R1,R2,…,RN。

,构成,那么在选择逻辑查询计划时,还应该考虑用R1URZU…URn替代查询中使用的R,替代后的查询或许能很大程度的简化表达式。

3)对局域网来说,通讯代价有着跟数据库的磁盘1/0代价相比拟的重要性。

网络通信代价会随着用户数或负载的变化而改变,所以网络情况变化的随机性对分布式查询处理来说,更应该考虑通信代价。

但当某个数据库的查询负载过高时,需要牺牲一定的通讯代价来提高执行的并行度。

此外局域网络的广播能力可以用于全局优化更新、收集信息。

3、分布式数据库优化技术探索

由于分布式数据库在物理上可能分布于不同的服务器节点上,包括库、表甚至数据分片一级的分布。

所以为并行执行提供了可能,为了提高查询操作的并行度,可以对查询执行策略作优化

原来在一个节点上进行连接操作的查询(图),并行化到多个节点上同时执行(图),从而可以提高总的执行速度。

但是,并行的同时,带来了通信代价,在局域网里,通信所消耗的时间不可忽视。

而且,还有从各个节点上传送过来的数据需要组装成结果集的开销,所以提高并行度,并不见得提高了速度,还可能降低了速度。

基于以上的考虑,我们作这样的思考,能不能尽量避免通信的开销,即让一个查询尽可能在一个节点上执行,这在分布粒度越大的分布式数据库来说,就越容易避免。

所以对库级分布,可以作这样的探索。

4、分布式数据库优化查询执行方式

分布式系统在用户查询请求到来之后首先检查本地是否有此数据库,如果有则在本地执行;如果没有则全局查询处理模块就根据该表中的信息来选择一台处理本查询最优化的节点,即选择一个有该数据库且所操纵的表的查询代价最小的数据库节点。

并与优化的节点建立连接,将查询命令发送到优化的节点上去执行,

同时将优化节点的IP返回给客户端。

客户端收到反馈消息(新IP)后,立即与新IP重新建立连接。

当新的服务器节点处理完查询后,就将结果返回给客户端。

如图所示。

由于过程2、5可以和过程3、4并行进行,过程2、5包括的处理步骤有:

建立连接,发送查询命令,以及执行命令;过程3、4包括的处理步骤有:

返回优化节点IP,重新建立连接。

所以一般情况下,过程3、4的处理时间不会大于过程2、5的处理时间。

而且当查询执行完毕后,结果集不会增加一次中转的操作(即先将结果集返回服务器节点1,然后节点1再将结果集返回给客户端),因此重新建立连接不仅不会存在额外的时间开销,反而简化了返回结果

三、依据半连接操作的优化算法

这个算法的基本思想是:

数据作为一个整体关系或片段在网络中进行传送,这很显然是一种冗余的方式,当一个关系转移到另外一个站点时,在连接操作中不是所有的数据都是有用的。

但是,没有参与连接操作的数据,或是没用的数据在整个网络中是没有必要传输的。

这一优化策略的基本原则是尽可能使用半连接操作只连接网络传输中的涉及的数据。

使用半连接算法优化连接查询的步骤,如图所示:

四、基于标记二次半连接的查询优化算法

1、理论基础

对于任意的关系R,本节中一些定义、定理、性质如下:

定义1:

规定符号表示:

半连接:

;连接:

;投影:

;那么,半连接的含义就表示为:

;连接的含义就可以表示为:

定义2:

由定义1可知,半连接操作具有非对称性

定义3:

半连接操作步骤:

定义4:

假设站点1和站点2分别存在关系R、关系S,两个关系中都存在属性X,对站点2中的关系S按照属性进行选择操作,在将缩减后的关系S’中的X属性回传给站点1,同时,对站点1中关系S’中X属性的每个记录都做一个“标记”,此时站点2中的关系S称为标记的“发起方”;接收端中即将产生的R’称为标记的“协同方”,R’在获得X属性各个值的同时也得到了每个值所对应的唯一“标记”,由此可对R’的X属性中进行连接操作的值也做一个“标记”,称为“标记”。

定义5:

查询代价估算方法:

假设一个查询执行的预期代价为QC,则

在集中式中:

QC=I/O代价+CPU代价

在分布式中:

QC=I/O代价+CPU代价+通信代价

通信代价可以用以下公式作粗略估算:

TC(X)=C0+C1*X

其中:

X为数据的传输量,通常以bit为单位计算;

C0为两站点间通信初始化一次所花费的时间,它由通信系统确定,近似一个常数,以秒为单位;

C1为传输率(传输速度的倒数),即单位数据传输的时间,单位是b/s.

直接连接的代价:

半连接的代价:

定义6:

如果关系R2半连接关系R1,可以减少R2的代价,而关系R1半连接关系R2,不能减少R1的代价,则称R1的优先级高于R2的优先级,用B(R1,R2)来表示。

T(R):

表示关系R中的记录数;C(R)表示对T(R)的一个代价估算值;

V(R,a):

表示关系R中属性a不同值的个数;C(R,a)表示对V(R,a)的一个代价估算值;

S(R,a,m):

表示关系R中具有连接属性a的记录值用标记属性mi表示;C(R,a,m)表示对S(R,a,m)的一个代价估算值。

(R)=

(R)表示关系R中具有属性a的记录的集合

性质1设关系R的属性a及关系S的属性b是公共属性,并在这个公共属性上进行

如果

,则有

如果

,则有

假设存在关系R的属性a以及关系S的属性b是公共属性,并且对这个公共属性进行连接操作,假设存在以下记录数的关系:

,半连接的方法存在两种:

两种不同的连接方式产生的代价:

代价的证明:

2、算法的思想和基本原理

标记二次半连接优化算法共分为以下几个阶段:

半连接、标记连接属性(在对应的关系中加入相应的标记字段)、半连接、二分劈开,动态连接。

假设存在关系R1,R2,.....,Rn的一个查询(关系分布在不同的站点),此算法中涉及的某个连接序对为(Ri,Rj)且(

)其连接属性为

插入标记属性(Mark(X))半连接运算为semijoin(Ri,Rj),完全缩减后状态为Rio,Rjo,二分条件为AVG(Rij(x)),两关系所在站点为Site(Ri),Site(Rj)。

下面给出其算法:

(1)半连接:

对选出的所有半连接序对(Ri,Rj)(

)进行半连接运算SemiJoin(Ri,Rj),达到完全缩减状态。

即关系Ri,Rj被缩减为Rio,Rjo。

(2)插入标记属性:

在进行半连接序对的关系中分别插入标记属性列,对于第一步骤中进行半连接操作时的连接属性X的记录,分别加入属性的值,两个不同关系中,记录对应的标记值应该相同。

下次再次连接时,直接通过标记位。

减少了记录连接属性比较的次数,节省连接的时间。

(3)半连接:

用标记属性Mark(x)进行连接,节约访问时间。

这次半连接时不仅要将关系Rio中筛选出来的连接属性值传送过去,而且还要将属性值中元组的顺序传过去,比如为(x1,x2,x3,⋯,xn)。

当在A站点上形成关系Rjo时也要按照中连接属性值的顺序(x1,x2,X3,⋯,xn)对Rio进行排序,这样形成的结果形成了一一对应的关系,完成查询连接操作。

形成新的查询结果,即:

Ri1,Rj1。

(4)二分劈开:

依连接属性Mark(x),计算二分劈开条件AVG(Rij(x)),二分劈开条件对于该优化算法至关重要。

影响多结点的并行性处理。

二分条件选择得不好会影响数据记录在两个站点的分布,可能导致数据不能在两个站点等分,使数据的分布呈现严重的不对称性。

这样不但不能充分利用多节点的并行性,而且还会增加通信的信息量,降低响应时间性能。

对于大型的数据库,由于查询后结果数据的不确定性,二分劈开条件的选择非常复杂,要针对不同的数据作不同的调整,二分条件的选择并不容易实现。

用二分劈开条件分别把A站点的关系Ri1和B站点的关系Rj1分为两半(Rcut1,Rcut2,Scut1,Scut2),条件相同的数据传送到同一个站点进行连接,则形成分布在两个不同站点上的连接结果(Co/2,Co/2)。

之后的连接结果不论是传送到目标节点,还是传送到另一个站点(如F站点),传送操作都可并行执行,且两站点数据所涉及的所有数据库操作都可并行执行。

由于提高了并行性,所以使响应时间减小,而且由于二分后的数据库进一步减小,使得所有数据库操作的响应时间也相应减小。

缩短了响应时间,提高了查询性能。

(5)动态连接:

依连接属性Mark(x),把上一步二分劈开后连接属性相同的连接结果按条件的不同分为两个不同的组如Raobo‘,Rcodo’,Riojo’,Ruovo’为一组和Raobo”,Rcodo”,Riojo”,Ruovo”为一组。

对每组中,求出使响应时间最短的连接序对组。

并行执行连接,之后形成的结果,再求连接序对组,再连接,直到在一个站点上形成连接结果。

接下来,再对形成的几个连接属性不同的序对组,按使并行响应时间最短的法则形成执行序对。

迭代并行执行,最后形成结果数据。

由不同的查询要求,利用此算法,可能会产生不同的处理情形:

(1)选择操作产生的结果,通常包含排序要求经过对等标记半连接的处理过程,最终符合要求的查询结果已经产生并做了相关联记录的一致性标记,可以将这些数据传输到某一节点(由结果需要呈现的位置而定),根据标记吻合的原则进行匹配拼接,只保留公共属性值中的一个,如上文中提到的公共属性X。

对于最终结果按照某一字段升序或降序排列,实现方法如下:

如果要求结果在关系R所处的节点进行显示并按R中的某一属性进行升(降)序排序,则先按此属性对

R0执行排序,产生的结果序列可能是(r3,r1,r4,r2⋯.,其中r代表Ro中的记录),相对应的标记后的X属性为(X3,X1,X4,X2⋯⋯,其中X代表X属性的具体值),

在拼接之前,对So也依照X属性的现有顺序进行排序,结果为(s3,s1,s4,s2⋯⋯,其中S代表S0中的记录),此时R0与S0的相关联结果顺序已经一致,可以执行拼接并显示为最终结果。

在拼接完成之后,如果需要根据不同的属性进行二次或三次排序,则只对现有结果进行操作,完全可以忽略拼接之前执行的各种命令。

结果在关系S所在节点的排序情况类同于上面所述。

如果要求结果在关系R或S以外的其他节点进行排序,则将缩减后的关系R0与SO传输到此节点并存储,此后的操作类同于上面所述。

在分布式数据库系统中,一个查询可能涉及多个站点。

通常以两种不同的目标考虑查询优化:

一种目标是总传输代价最小,另一种目标是以每个查询的响应时间最短。

在一般远程网络分布式查询环境中,查询的局部处理时间与通信所需时间相比,可以忽略不计,减少通信费用成为分布式查询优化的主要目标。

从减少通信费用和缩短响应时间方面比较两种算法的性能。

传输代价模型可表示成一个线性函数,表示X字节白勺传输时间与数据的数量成线性关系可用下面关系式表示:

T=TO+TI+X

在半连接中传输的数据量X:

X=SIZE(B)*VAL(B)+SIZE(R)*CARD(R')+SIZE(RooS)*CARD(RooS)

在二次半连接中传输的数据量X:

X=SIZE(B)*AL(B)+SIZE(A)*VAL(A)+SIZE(R)*CARD(R’)+SIZE(S)*CARD(S3’)

其中,T为数据传输时间,TO为建立一个连接所需的固定时间,T1是网络范围内的统一的传输速率,X表示数据传输量,A,B为连接属性,R,S为连接关系,VAL为所求属性上不同值的个数,SIZE为属性或关系的字节数,CARD为无重复的元组个数。

本文设计了一种新的半连接的数据库查询算法,从所有的子网络产生的中间结果数据作为成本的决定性因素,并定义一个函数,以确定这一优化算法的好处,实验结果表明,在分布式查询优化,和一般的半连接算法比较,改进后的半连接查询优化算法具有较高的优化效率,大大减少了中间结果数据量,有效地降低了网络通信的总成本。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1