基于分布式数据库查询优化策略的研究
2014-04-21程艳艳
程艳艳
摘 要 在分布式数据库系统中,由于物理分布的不同使得数据的查询复杂度大大增加。对于给定的一个查询,往往会有不同的查询策略,而数据库查询优化策略就是在诸多策略中寻找作为有效的查询方法。有效的数据库查询策略能够在查询执行效率上成倍提升。文章主要结合分布式数据库系统的特点,对基于分布式数据库系统的查询优化策略进行研究,以期更好的改善基于分布式数据库系统的查询效率。
关键词 分布式数据库;查询;优化策略
中图分类号:TP311 文献标识码:A 文章编号:1671-7597(2014)04-0033-02
随着计算机网络和互联网技术的快速进步,数据库技术也取得了巨大发展。分布式数据库系统是以集中式数据库为基础,并且结合计算机网络发展起来的,开始于20世纪的70年代,第一个基于分布式的数据库系统又CCA于1979年实现。在20世纪90年代以后,随着计算机和网络技术的不断成熟,分布式数据库系统也开始进入商业应用阶段。分布式数据库系统能够实现对计算机网络内具有逻辑关系的数据库进行管理,并且每个单独的结点都具有相对独立的处理能力,可以实现局部应用的功能。
1 分布式数据库查询优化分析
1.1 分布式数据库系统
分布式数据库系统是实现数据库系统与计算机网络的有效结合,与传统的集中式数据库系统相比,分布式数据库系统具有典型的相对独立性、冗余度适当、事务分布式处理等特点。在目前的分布式数据库系统中,数据在逻辑和物理层面都具有自身的独立性,同时数据还存在着分布层面的透明性。所谓数据的透明性,即指使用者无需对数据的逻辑分片进行考虑,同时也无需考虑数据的复制情况以及具体的物理位置、支持的数据类型等相关细节。在具有数据透明性的基础上,用户可以在不考虑数据分布的情况下编写查询程序,使得数据库系统的使用更加简便,有效性也会有明显的改善。基于分布式构建的数据库系统,为了更好的节约数据存储空间,同时保证数据的一致性,需要采取措施降低数据的冗余度,然后分布式数据库系统却需要依靠数据冗余度的增加来增加数据库系统的可靠性以及系统的其他性能。也正是如此,由于数据冗余度的相对增加,使得基于分布式数据库的数据查询变得更加复杂,因此对基于分布式数据库系统的查询优化策略研究具有十分重要的意义。
1.2 分布式查询优化结构
分布式数据库查询包含一定的过程,一般从结构上将分布式数据库查询分为四层,分别为查询分解、数据本地化、全局优化以及局部优化:第一层是查询分解,它依据全局概念模式对全局查询语句转化为SQL语句或关系代数表达式;第二层是数据本地化,它依据分片模式与片段的分配模式的相应内容将在全局关系上的查询分解为在相关片段上的查询,且尽可能实现近地化、本地化;第三层是全局优化,它的作用是找出分片查询的最优操作顺序,让查询代价达到最小,其中包括一个关键的操作就是关于优化连接,通过全局优化处理,输出一个片段上的、优化的关系代数的查询,它所需要的信息来其他各个站点的自分布式数据库的统计信息;最后一层是局部优化,它主要是在各个站点上进行数据片段的查询,由各个站点对子查询进行优化,其优化过程在很大程度上和集中式数据库的查询优化类似,分布式数据库查询代价重点考虑通信代价,所以数据本地化与全局优化是分布式数据库查询优化的核心。
1.3 分布式查询优化目标
在目前的数据库系统查询策略中,无论是目前的分布式数据库系统还是传统的集中式数据库系统,其查询策略都是基于执行查询的预期代价的,其不同之处在于具体查询代价的构成是不尽相同的。在传统的集中式数据库系统中,系统往往选择运行在某台计算机上,因此查询的代价构成是CPU+I/O,然而在基于分布式的数据库系统中,由于数据查询需要在站点之间进行通信,因此其查询代价除去基本的CPU+I/O,还需要考虑计算机网络的数据传输代价。因此可以发现,与集中式数据库相比,分布式数据库的查询代价相对较高,而且其复杂程度也相应增加。即便在目前的分布式数据库查询中也借鉴了集中式数据库的策略,然而在查询代价的规模和具体的优化策略方面还是有着本质区别的。在分布式数据库的查询优化策略中,主要有两个目标:一是实现查询的总代价最小,分布式数据库查询总代价是由I/O代价、CUP代价以及数据通信代价共同组成的;二是实现查询的响应时间最短,分布式数据库数据的冗余性与分布性加大了查询的并行处理的可能性,假如每次查询时间减少了,并且查询处理还能够并行,那么整体查询处理的时间也就减少了。第一种目标一般认为网络传输速度大大低于本地I/O速度与CUP速度,因此重点在于怎样降低网络通信代价以达到查询优化,而第二种目标一般认为增加了并行处理,通过减少局部代价也能够优化查询。这两个目标的实现对于分布式数据库优化具有显著作用。根据对分布式数据库的分析,其数据系统由若干台计算机组成,因此就有可能实现查询的并行处理,使得查询的相应时间可以大大缩短,进一步提升分布式数据库的查询速度。在基于分布式数据库系统的查询优化策略中,主要包括查询策略和局部处理两个内容,相比之下前者更为重要。在分布式数据库系统中,其查询策略的选择将直接关系到整个分布式数据库系统的性能。
2 分布式数据库系统查询优化策略
根据对分布式数据库系统特点的分析,结合具体的数据库查询优化策略的研究,基于分布式数据库系统的查询优化策略主要有以下几个方面。
1)合理设置索引提升查询速度。数据索引是分布式数据库系统中的重要数据结构,为了提高查询速度,应坚持一定的使用原则,其具体的使用原则包括:在未指定为外键但需要频繁连接处设置索引,在不常用于连接的字段可以由DBMS自动生成索引;在需要频繁进行排序和分组操作的列设置索引;在排序列数较多时可以设置复合索引。总的来讲,在缺省状态下索引设置为非聚集类型,但有时候它并非最合理的,合理化的索引类型需要以对查询类型的分析为基础,例如,出现大量重复值时应考虑建立聚集索引,时常同时存取多列且含有重复值时可建立复合索引,复合索引必须尽可能使关键查询形成索引覆盖。
2)尽可能的避免排序或者对排序进行精简。应该尽可能避免对大型数表进行排序操作,在通过索引可以依照一定的次数输出时就可以有效的避免排序操作,有效的提高数据查询的速度。可以通过适当增加索引的方法降低排序操作,同时可以对数据表进行适当的合并操作。在无法避免排序的情况下,应当试图简化它,通过缩小排序的范围,尽可能的对排序操作进行简化。
3)避免对大型数据表的顺序存取操作。在分布式数据库查询过程中,嵌套查询的顺序存取对于数据查询效率有着非常重要的影响,会大大降低数据查询的速度,因此可以通过对存在连接的列建立索引的方法避免对大型数据表进行顺序存取操作,另外还能利用索引路径处理查询,采用并集以避免顺序存取。
4)通过临时表加快数据查询速度。可以通过将数据表的子集进行排序并且构建相应的临时数据表,提升数据查询的效率。临时表的行数明显少于主表,因此可以降低I/O代价,大大降低查询操作的工作量。通过构建临时表能够有效的避免进行重复排序操作,同时还可以降低优化器操作。
5)避免困难的正规表达式和相关子查询,减少查询嵌套层次,提高查询的效率,以免当主查询中的列值在改变之后,子查询又要再一次进行查询,以节约查询时间,同时避免非开始的子串。
3 总结
随着计算机和网络技术的快速发展,基于计算机网络的分布式数据库系统也得到越来越多的应用。分布式数据库查询优化策略的好坏直接关系到整个数据库系统的性能,因此需要根据实际需求,不断推进数据查询优化策略的完善。
参考文献
[1]刘放美,王猛.分布式查询优化算法及对SDD-1算法的改进[J].科技广场,2005(02).
[2]张均东.分布式网络系统中的数据访问设计与优化.大连海事大学.
[3]王意洁.面向对象的数据库并行查询优化处理[J].计算机科学,2000(02).
[4]金正淑.分布式数据库系统中的查询优化[J].东北电力学院,2003(10).endprint