分布式查询优化.docVIP

  • 14
  • 0
  • 约7.3千字
  • 约 6页
  • 2019-05-03 发布于江西
  • 举报
分布式查询优化 刘芳 (福建信息职业技术学院,福州 350003) 摘要:在分布式数据库中,查询优化是一个非常复杂的问题。在分布式数据库中查询优化不同于在集中式数据库中,两者的侧重点不同。集中式数据库侧重于减少IO时间处理,而分布式数据库则侧重于较少通讯代价。半连接算法对于分布式数据库中较少通讯代价有显著的作用,在大多数的分布式数据库中,都不同层次地应用了半连接算法。本文通过对分布式数据库的查询优化原理分析,提出了几种查询优化策略,并且对于半连接算法的实现策略做出了详细讨论。 关键词:分布式数据库;查询优化 半连接算法; 分布式查询优化是当今大多数分布式数据库的重要研究方向,查询优化的效能也是衡量数据库性能的一个重要参数。如何设计分布式查询优化策略是关系到数据库优劣的指标。该文以Microsoft SQL Server 2000数据库系统为例,讨论分布式查询优化策略。 基于MSSQL Server 2000的查询优化 由于MSSQL Server 2000已经提供了一定的分布式查询处理能力,因此本节主要讨论全局查询优化策略和局部查询优化策略。 对于传统的集中式数据库系统,查询优化主要是考虑减少I/O时间和CPU的时间。而在分布式数据库当中,为了更加准确地优化查询,应当有足够的信息,以此来决定哪一种数据访问技术最有效。在目前大多数的分布式系统当中采用了C/S体系结构,在这种结构下,数据存放的位置成为了最主要的因素。分布式查询优化由三个组件构成: 访问原理 在大多数的关系数据库管理系统中,主要采用两种方式来访问表:一种方式是对整张表进行扫描,另一种方式是使用索引。使用哪种方式是最好的选择呢?这取决于环境。比如说,如果一张表里90%的内容都要被访问到,使用索引的方式并不是明智的选择。对所有行进行扫描将能够减少I/O和总体代价。然而,当只访问表内容的10%时,使用索引能带来更多的效率提升。当然,在一些关系数据库管理系统中可能提供了其他的数据访问方式,表扫描和索引在几乎所有的系统中都能被找到。 连接准则 如果超过一个的表要被访问到,那么这些表连接的方式应当被决定。通常DBMS都提供了几种不同的连接方式,比如,早期的DB2提供了三种不同的连接方式:合并扫描连接,嵌套循环连接和混合连接。优化器(optimizer)应当能决定这些表进行连接的顺序,在分布式的环境当中,连接要从哪个站点开始也是应当慎重考虑的。 传输代价 如果在连接过程当中,数据在多个站点之间传送,那么数据传输的代价也应当被慎重考虑。有时简单地将整张表传送到网络的其他节点可能会减低了整体的传输代价。传输代价不仅仅在分布式系统中有效,在集中式系统中也具有一定的意义。 查询优化主要通过两种方式来实现:一种是DBMS提供了相关的功能,而另一种是通过程序员的代码来实现。很显然,如果通过编程来实现优化,要求程序员对于数据库的分片和分配方式这些细节很了解,如果一旦数据做了改变相应的程序也要做出修改,但是这种方式在一定的范围内可能查询效率比较高。如果是系统提供了相应的优化,将对每一条查询都进行分析,然后进行优化,但是优化器(optimizer)生成的查询可能不是最好的方案,因为分布式查询优化是一个非常复杂的问题。 (二)半连接算法 在近几年时间里,为了提高分布式环境的查询效率,一系列新的查询处理技术被提出,其中之一就是半连接约减器(semi-join reducer),其基本思想是通过计划早期应用连接预言来减少中间查询结果的大小和其他操作的代价,目的是在分布式系统中减少通讯代价。 半连接是由投影和连接运算导出的一种关系代数运算。两个关系的半连接表示为: R∝S=R∞(ПB (S)) 其中,∝表示半连接,∞表示完全连接,ПB (S)表示对S所在的站点对B进行投影。 半连接的步骤是:首先在S所在站点对连接属性投影,将投影结果送到R所在站点执行半连接,然后将半连接后的结果送回S所在站点完成连接。 一个简单的半连接比较简单,但是在实际应用中,半连接不一定能带来多少效率的提升,因为在一个复杂的查询当中,并不是简单地把完全连接替换成半连接就算是查询优化了,还要考虑连接的顺序,连接的代价,由哪个站点完成连接,甚至于要考虑到服务器负载等各种情况。 为了方便讨论,首先对一些基本操作作出定义。 设全局关系R的不同片段为Ri,所需Ri的有关信息如下: 基数:片段Ri含有的元组数,记为card(Ri) 长度:Ri中每个属性A的长度,即属性A的字节数,记作size(A)。元组的长度为Ri的所有属性之和,记作size(Ri) 评价一个半连接的代价通常用半连接结果T的基数card(T)来衡量,估算card(T)有一些方式,一个保守的估算公式是: card(A∝B)≈min(card(A),card(

文档评论(0)

1亿VIP精品文档

相关文档