APP下载

基于直接连接的查询优化处理方法研究

2017-05-30马东波

科技尚品 2017年1期
关键词:方法

马东波

摘 要:在分布式数据库查询中多采用直接连接的方式,但是这种方式耗时较长,代价较高,查询效率低。本文结合现有的连接查询方法,深入研究基于直接连接的查询优化处理方法,有效缩短查询处理时间。

关键词:直接连接的查询;优化处理;方法

近年来,分布式系统得到了广泛的应用。分布式信息库查询是现代信息处理中的重要部分。在分布式数据查询处理时,连接操作能够直接决定查询效率。为实现分布式数据库系统更加有效地处理连接操作,业内人士进行了大量的探究实验,最终形成了不同的算法。优化连接操作的途径一般有两种,即半连接与直接连接。在注重本地处理代价时,一般采用直接连接的方式。本文针对直接连接提出了优化算法,并利用数据分片进行并行处理。

1 数据分片

数据分片,即数据划分,是分布式数据库的主要特征之一。各个局部数据库按照一定的逻辑组合成全局数据库。反之,全局数据库按照特定的逻辑进行分割即成局部数据库。通常来说,在关系数据库中,一个关系能够将某些数据间的逻辑关系描述出来。但是,由于用户使用的站点不同,需要该关系中的元祖也可能不同,此时就需要分割这个关系,将得到的各部分元祖称为逻辑片段,满足各个用户要求,减少网络通信量,提高系统响应的速度。

数据分片有4种方法:①水平分片:按一定的条件把全局关系的所有元组划分成若干不相交的子集,每个子集为关系的一个片段;②垂直分片:把一个全局关系的属性集分成若干子集,并在这些子集上作投影运算,每个投影称为垂直分片;③导出分片:又称为导出水平分片,即水平分片的条件不是本关系属性的条件,而是其他关系属性的条件;④混合分片:以上3种方法的混合。可以先水平分片再垂直分片,或先垂直分片再水平分片,或其他形式,但他们的结果是不相同的。

数据分片应该具备的条件:①完备性条件:必须把全局关系的所有数据映射到片段中,决不允许有属于全局关系的数据却不属于它的某一个片段;②可重构条件:必须保证能够由同一个全局关系的各个片段来重建该全局关系。对于水平分片可用并操作重构全局关系;对于垂直分片可用联接操作重构全局关系;不相交条件:要求一个全局关系被分割后所得的各个数据片段互不重叠,但是对垂直分片的主键除外。

2 查询优化处理的目标及执行代价

2.1 查询优化目标

基于直接连接的查询优化可能涉及多个站点,查询优化的目标一般有两种:总代价最小。总代价包括CPU及I/O代价、网络在各个站点之间数据传输的代价。因为数据在分布式数据库中是分布、冗余的,在直接连接查询处理时需要考虑数据及信息传递所产生的通信费用;另一种目标即响应处理时间短,由于数据的分散及冗余,并行处理的可能性很大。由于系统应用不尽相同,通常着重与实现一种目标。本文致力于达到总代价最小的目标。

2.2 查询执行代价

主要包括:I/O代价、CPU代价、通信代价。

查询执行代价模型包括:I/O代价模型。一次訪问代价计算可通过CIO=DO+D1*X(DO表示I/O代价,与X无关;X为存取数据大小;D1表示传输单位数据所花费的时间),在实际优化过程中,由于代价只用于进行执行方案的优劣比较,因此不必算出精确数值,得出一个估算值即可;通信代价模型。这种模型与网络类型有关。可简单表示为:Cc(X)=CO+C1*X(CO为代价系数;X为数据大小;CO为数据传输所需要初始代价;C0与C1为常数)

3 基于直接连接的查询优化处理方法

3.1 实现连接运算的方法

3.1.1 嵌套循环

嵌套循环是一种古老的连接方式。SQL中的连接,本质上就是将两个数据集合依据连接条件进行匹配操作。嵌套循环通过两层循环手段进行依次的匹配操作,最后返回结果集合。其操作过程简单,与最简单的排序检索算法类似。执行过程如下:Oracle CBO首先将一系列的连接关系,拆分为若干层的Nest Loop Join,确定连接顺序。如a.field1=b.field1 and b.field2=c.field2,就可以组织成表A和表B先进行嵌套循环操作,之后操作的结果集合再与数据表C进行嵌套循环操作。所以,我们查看到的连接操作,通常都是分层次的;在确定每次嵌套循环的两端对象之后,确定外侧连接表和内侧连接表。将外侧连接表作为连接驱动表,根据SQL中对驱动表的连接条件,进行筛选。最后获取到驱动表数据集合;从驱动表每条记录入手,检索内侧表记录,获取符合连接条件的记录。形成连接行。

3.1.2 归并扫描法

按照连接属性对两个关系进行排序,再根据连接属性值的顺序对这两个关系进行扫描,匹配成元祖。此方法使排序代价增加。将相同连接属性的元祖缓冲起来以便下次使用。

3.2 连接关系的传输

3.2.1 全体传送

传送关系的字节数产生传输费用,分为传输内关系与传输外关系。

3.2.2 按需传送

即将元祖按照传输需要一次一个进行传送,无需建立临时储存器。但是由于每次提取元祖都要进行一次信息交换,代价很高,仅可在高速运行的局域网中才能使用。

3.3 执行场地

执行场地包括:传送I关系的Site(O);传送O关系的Site(I);传送O关系和I关系的Site(other)。

4 结语

文章以实现总代价最小为目的,基于直接连接的查询方法进行优化处理。在实际操作中,没有必要算出精确数据,大致估算即可,选择总代价小、节省时间、具有可行性的方案。

参考文献

[1]乔百友,邓增安,王秋杰,等.一种基于网格索引的空间连接查询处理优化算法[J].小型微型计算机系统,2014,35(10):2243-2248.

[2]赵宇兰,柳欣.基于连接依赖信息的分布式连接查询优化算法[J].现代电子技术,2016,460(5):28-32.

[3]姚剑芳.案例教学法在SQL Server连接查询教学中的应用[J].吉林省教育学院学报旬刊,2015,(3):81-82.

(作者单位:北京信息职业技术学院)

猜你喜欢

方法
高中数学知识与方法大梳理(二)
中医特有的急救方法
高中数学教学改革的方法
化学反应多变幻 “虚拟”方法帮大忙
变快的方法
学习方法
用对方法才能瘦
最有效的简单方法
四大方法 教你不再“坐以待病”!
赚钱方法