分布式数据库系统查询优化算法综述
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网工102-韩伟彬-1006100162
分布式数据库系统查询优化算法综述
摘要:随着互联网和数据库技术的飞速发展,分布式数据库在计算机网络上的应用越来
越广泛,数据的查询也越叫复杂化,对查询的效率要求也越来越高。
在分布式数据库中,查询处理方法的效率对系统的性能起着非常关键的作用,而在分布式数据库系统中,处理一个查询的代价主要是由进行通信的数据量来决定的,半连接是一种非常有效的工具(方法)来减少连接的代价,从而更好的减少通信的数据量。
在这样一个分布式系统中,我们有能力分散那些数据(经常被不同的用户终端使用的)在不同的物理位置,同时可以通过查询的方式组合来自于不同站点的数据,假如在一个比较合适的系统中多个数据副本被使用,这样分散的数据将会产生一个比较合理的查询相应时间。
关键字:数据库技术,分布式,数据库系统,查询,优化算法。
一:分布式数据库的定义
分布式数据库是一个逻辑上完整而在物理上分散在若干台互相连接着的计算机上的数据库系统,各组件分布在网络的各个节点上,依靠特定的更新和检索机制进行数据库分布,数据库的所有性能都会显著增强。
分布式数据库系统使用计算机网络将地理位置分散而管理和控制又需要不同程度集中的多个逻辑单位连接起来,共同组成一个统一的数据库系统。
因此,分布式数据库系统可以看成是计算机网络与数据库系统的有机结合。
分布式数据库系统有两个重要的组成部分:(1)分布式数据库和(2)分布式数据库管理系统。
分布式数据库是计算机网络中各站点上数据库的逻辑集合。
也就是分布式数据库是一组结构化的数据集合,在逻辑上属于同一个系统,在物理上分布在计算机网络的不同站点上,是集中与分布的统一。
这个定义强调了分布式数据库的两种特性;(1)数据分布性。
即这些数据库是分布在不同站点上的。
这把分布式数据库与单一的集中式数据库别开来。
(2)逻辑关联性。
即这些数据库具有某些把它们联系在一起的性质。
这把分布式数据库与驻留在计算机网络不同站点上的一组本地数据库区别开来。
分布式数据库管理系统是分布式数据库中的一组软件,负责管理分布环境下逻辑集成数据的存取、一致性和完整性。
同时,由于数据的分布性,在管理机制上还必须具有计算机网络通信协议的分布管理特性。
分布式数据库系统有两种:
(1)在物理上分布的,但逻辑上却是集中的。
这种分布式数据库只适宜用途比较单一的、不大的单位或部门。
(2)在物理上和逻辑上都是分布的,也就是所谓联邦式分布数据库系统。
由于组成联邦的各个子数据库系统是相对“自治”的,这种系统可以容纳多种不同用途的、差异较大的数据库,比较适宜于大范围内数据库的集成。
二:分布式查询的层次结构
(1)查询分解:第一层查询分解是将查询的问题(通常是SQL 语句),转换成一个定义在全局关系上的关系代数表达式。
这一层的做法和集中式数据库管理系统一样,因为这层中并没有设计到分布问题。
本层转换所需要的信息在全局概念模式中获取。
(2)数据本地化:第二层数据本地化是把一个在全局关系上的查询,进行具体化,落实到合适的(使尽可能做到本地化或近地化)片段上的查询。
即将在全局关系上的关系代数表达式,变换为在相应片段上的关系代数表达式。
这一变换所需要的信息在分片模式和片段的分配模式中获得。
(3)全局优化:第三层全局优化的输入是分片查询,即在片段上的查询。
查询优化的目标在于寻找一个近于最优的执行策略。
前面两层已经通过消除冗余表达式,查询本地化或近地化等做了某些优化。
全局优化即是找出分片查询的最佳操作次序,包括使得代价函数最小。
代价函数一般是输入输出的代价和通信代价的综合。
不过,在一个基于广域网的分布式数据库管理系统,通信代价作为最为重要最为显著的因素,因为其有限的带宽使得通信费用比本地处理更为昂贵。
全局优化的一个重要方面是关于连接操作的优化,全局优化处理层的输出时一个优化的,片段上的关系代数查询。
本层转换所需要的信息来自数据库统计信息,包括各站点片段统计信息,资源信息和通信信息等。
(4)局部优化:最后一层是局部查询优化由拥有与查询有关的片段的各个站点执行。
在每一个站点上执行的子查询被称为局部查询。
它有该站点上的数据库管理系统进行优化,采用集中式数据库系统中查询优化的算法。
所需信息取自局部模式。
三:分布式数据库查询优化准则和执行过程
分布式数据库查询优化的准则是以最小的总代价,在最短的响应时间内获得所需要的数据。
响应时间就是从接收查询到完成查询所需要的时间。
它既与通信时间有关,又与局部处理时间有关,而通信费用与所传输的数据量和通信次数成正比。
分布式数据库系统中数据的分布和冗余会引起查询总代价的增加,但也提高了查询并行处理的可能性,从而可以减缩查询处理的响应时间,加快了查询的处理速度。
在实际查询中难以实现绝对的优化,只能尽可能的将不必要的操作减为最少,选择最便宜或最快的方法来执行操作。
分布式数据库中的查询过程可分为逻辑分解、语言转换和优化组合几个部分。
分布式数据库系统中,用户可以用全局查询语言对多个数据库同时进行查询,即为全局查询。
全局查询一般经过以下几个过程:首先,对全局查询进行逻辑分解成几个子查询,每个子查询对应一个局部数据库;其次,若全局查询语言与局部查询语言不同,则进行语言的等价转换;最后,各个子查询的结果优化组合后返回。
不同的查询分解对应不同的系统性能,因此为了达到优化系统性能,需要相应查询优化器来确定一个相对较好的执行计划,最后启动查询计划。
四:分布式查询优化的主要技术
(1)分布式数据库优化分类
查询优化的关键在于在所有可能执行策略的途径空间中选择一个最佳的点。
一种直接的方法就是从途径空间搜索所有可能途径,选择一种最佳的途径。
此种方法所需代价太高。
另一种减小代价的办法是随机策略,随机选择一种可能的途径。
这种执行途
径可能不是最好的但它是相对比较好的,减小了内存和时间消耗的代价。
再一种减小代价的办法是使用启发式选择,在方法空间中缩小查找范围。
无论在集中式还是分布式系统中,通用的办法是减小中间关系的尺寸。
它首先执行一元操作,然后对二元操作进行排序。
在分布式系统中,一种重要的启发式选择是通过把通信代价与半联接结合来替换传统的联接操作。
另一种分类方法是根据优化与执行的不同时间来分:静态和动态两种优化。
前者在执行前优化;后者在执行时优化。
静态查询优化在编译时进行,因此代价的分布存在于符合查询的各个步骤和阶段中,所以策略的中间关系的大小无法知道,只有在运行时才知道,必须使用数据库统计来估计代价的大小,而错误的估计将会影响子策略的优化途径。
动态查询优化在运行时进行。
在执行的任何一点,最佳的下一个操作的选择依赖于前一次操作执行的结果集的精确信息。
因此,数据库统计不必用来统计中间结果的大小。
但是,它们对选择第一个操作仍然有用。
动态查询的主要优点在于查询处理器可以获得中间关系的实际尺寸的大小,因此减小了错误选择的可能;主要缺点在于查询处理作为一种高昂代价的任务,在每次查询完需要重复执行。
因此这种办法只针对特定的查询。
混合查询优化则致力于提供静态查询优化的优点而尽量避免不精确估计带来的问题。
这种方式是基于静态方式的,但在出现中间关系的预测大小与实际大小有很大偏差时,可能进行运行时动态查询优化。
(2)分布式数据库优化设计要考虑的问题
在分布式数据库系统中,一方面,许多相对独立的处理器可能参与数据库操作。
分布式数据库可能提供若干机会:
(1)由于在处理一个问题时可以使用多台机器,并行以及加快查询反应速度的可能性增大。
(2)由于数据可以在多个节点上存在副本,系统可能不会仅仅由于一个节点或部件发生故障而不得不停止处理。
另一方面,分布式处理增加了分布式系统各个方面的复杂性,因此即使是DBMS中最基本的组成部分的设计,也得重新考虑。
在许多分布式环境中,通信开销可能远大于处理开销,因此的问题是消息如何传送。
比如分布式提交和分布式封锁。
影响通信开销的因素主要是由于带宽开销迅速减小。
某些类型的数据属于电子方式管理的大对象,因此即使在通信开销较小时,以太字节的数据传输开销也是不能忽视的。
此外,通信开销常常不仅仅涉及数据传送,还有为数据传送做准备的各层协议、在接受方重建数据以及通信的管理。
这些协议各自都需要大量的计算。
尽管计算开销也在减小,与数据与关键数据库操作的传统单处理器操作相比,进行通信所需的计算可能仍不能忽视。
(3)分布式数据库优化技术探索
由于分布式数据库在物理上可能分布于不同的服务器节点上,包括库、表甚至数据分片一级的分布。
所以为并行执行提供了可能,为了提高查询操作的并行度,可以对查询执行策略作优化原来在一个节点上进行连接操作的查询,并行化到多个节点上同时执行,从而可以提高总的执行速度。
但是,并行的同时,带来了通信代价,在局域网里,通信所消耗的时间不可忽视。
而且,还有从各个节点上传送过来的数据需要组装成结果集的开销,所以提高并行度,并不见得提高了速度,还可能降低了速度。
基于以上的考虑,我们作这样的思考,能不能尽量避免通信的开销,即让一个查询尽可能在一个节点上执行,这在分布粒度越大的分布式数据库来说,就越容易避免。
所以对库级分布,可以作这样的探索。
(4)分布式数据库优化查询执行方式
分布式系统在用户查询请求到来之后首先检查本地是否有此数据库,如果有则在本地执
行;如果没有则全局查询处理模块就根据该表中的信息来选择一台处理本查询最优化的节点,即选择一个有该数据库且所操纵的表的查询代价最小的数据库节点。
并与优化的节点建立连接,将查询命令发送到优化的节点上去执行,
同时将优化节点的IP返回给客户端。
客户端收到反馈消息(新IP)后,立即与新IP 重新建立连接。
当新的服务器节点处理完查询后,就将结果返回给客户端。
五:总结
随着因特网的不断强大,网络信息量越来越大,数据库的查询也日益复杂而且数据量动则几十万条,那么开发者就必须要对数据库进行资源优化以及系统查询的优化。
那在茫茫的数据中对数据进行查找,就是数据挖掘,数据挖掘的任务就是在海量的数据中发现有用的数据。
但是仅仅发现数据那是不够的,而必须采取行动把有用的数据转换成信息,信息变成行动,用行动产生价值。
通过数据挖掘技术来分析数据重要性可以将不同的数据区分开来,从而对分布式数据库系统查询进行优化处理。
参考文献:
【1】于秀霞,宋雅娟.分布式数据库半连接查询优化算法的研究[J].长春理工大学学报,2006 【2】.贾焰,王志英,韩伟红等.分布式数据库技术[M].北京:国防工业出版社,2001.
【3】王意洁,王勇军,卢锡成.基于半连接的并行查询处理算法的研究[J].软件学报,2001【4】.邵佩英.分布式数据库系统及其应用(第二版)[M].北京:科学出版社,2005
【5】.王艳等.分布式数据库查询优化处理的研究与应用[J].南昌大学学报2005
【6】教育部高等学校计算机科学与技术教学指导委员会.贯彻《高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)》的一种建议[M].北京:清华大学出版社,2008 【7】[美]JieWu.DistributedSystemDesign[M].北京:机械工业出版社,2001.
【8】闫丽,华彦涛,王艳辉.一种基于半连接的分布式数据库多元连接查询优化算法[J].通化师范学院学报,2005。