首页> 中国专利> 一种基于改进型SDD-1算法的数据库多连接查询优化方法

一种基于改进型SDD-1算法的数据库多连接查询优化方法

摘要

本发明涉及一种基于改进型SDD-1算法的数据库多连接查询优化方法。首先将双向半连接引入到SDD-1算法中,从而在一定程度上提高其全局搜索能力。其次对SDD-1算法的核心部分,即爬山算法做出修正。对选取有益双向半连接部分,增加一定的扰动。这里并不直接选取收益最大的双向半连接,而是以一定的概率选取收益值属于一定范围内的双向半连接。这样,运行几次SDD-1算法,将得到不同的查询执行策略。将这些查询执行策略进行编码,并将其作为遗传算法的输入。经遗传算法优化后,最终得到需要的查询执行策略。

著录项

  • 公开/公告号CN102110158A

    专利类型发明专利

  • 公开/公告日2011-06-29

    原文格式PDF

  • 申请/专利权人 上海大学;

    申请/专利号CN201110043615.9

  • 发明设计人 万旺根;周演飞;余小清;

    申请日2011-02-24

  • 分类号

  • 代理机构上海上大专利事务所(普通合伙);

  • 代理人何文欣

  • 地址 200444 上海市宝山区上大路99号

  • 入库时间 2023-12-18 02:43:19

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-04-05

    未缴年费专利权终止 IPC(主分类):G06F17/30 授权公告日:20130508 终止日期:20160224 申请日:20110224

    专利权的终止

  • 2013-05-08

    授权

    授权

  • 2011-08-10

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20110224

    实质审查的生效

  • 2011-06-29

    公开

    公开

说明书

技术领域

本发明专利涉及一种基于改进型SDD-1(System for Distributed Database,分布式数据库系统)算法的数据库多连接查询优化方法,主要是针对分布式数据库中的多连接查询中的连接执行策略的优化问题,旨在保证得到一个较优的查询执行计划,从而大大较少查询尤其是大规模多连接查询的执行时间。

背景技术

如今,由于计算机的应用领域迅速扩大,数据库的规模也日益增长,用户查询越来越复杂。于是,人们在集中式数据库系统成熟技术的基础上产生和发展了分布式数据库系统。分布式数据库系统是数据库技术和网络技术两者相互渗透和有机结合的结果。分布式数据库系统中的数据在逻辑上属于同一个系统,而在物理上却分布在计算机网络的不同结点上,并由一个分布式数据库管理系统统一管理。

数据库查询是数据库的核心操作,数据库管理系统只需要用户提出“查什么”,而不需要用户解决“怎么查”,即指定具体的查询策略。在实际中,我们不仅要利用数据库管理系统根据SQL(Structure Query Language,结构化查询语言)指令准确查询用户需要的数据,还需要充分考虑其查询效率的高低。因此,查询效率是数据库管理系统必须面临的一大挑战。于是,相应的查询优化技术便成了计算机技术最活跃的研究领域之一。在集中式数据库中,执行查询的开销主要是数据的输入和输出以及中央处理器运算时产生的代价。分布式数据库系统是在集中式数据库系统技术的基础上发展起来的,除了数据的逻辑独立性与物理独立性外,还有数据分布独立性,也被称为分布透明性。分布透明性指的是用户不必关心数据的逻辑分片,不必关心数据物理位置分布的细节,也不必关心重复副本(冗余数据)一致性问题,同时也不必关心局部场地上数据库支持那种数据模型。

对用户来说,虽然使用分布式数据库系统与使用集中式数据库系统感觉上一样,好像所有数据都存储在自己使用的那台计算机中,但是,数据的分散存储使得查询处理中需要它们在站点间相互传递,而数据在网络上传输要花费很大的代价。因此,影响分布式查询优化性能不仅包括CPU(Central Processing Unit)、I/O(Input/Output)等在内的局部开销,更重要的是查询数据在站点间传输时的通信费用。而分布式数据库查询处理和优化不仅是影响分布式数据库管理系统性能的关键因素,而且还对整个应用系统数据的可用性、可扩展性、提高分布式数据库的使用效率和可靠性起着不可估量的作用。

实验结果表明,通过本发明专利优化后的分布式查询代价(主要是关系间的连接代价)比运用传统启发式优化方法所产生的代价更小。因此,本发明专利具有一定的实用价值。

发明内容

本发明专利的目的在于针对已有技术中存在的缺陷,提供一种基于改进型SDD-1算法的数据库多连接查询优化方法,通过遗传算法的全局搜索能力,对SDD-1算法得到的执行结果进行优化,并最终求得比较理想的结果。

为达到上述目的的构思为:首先执行改进的SDD-1算法,利用该算法得到一个查询执行策略集,将该执行策略集作为遗传算法的初始种群产生的依据。然后,执行遗传算法,利用遗传算法的全局搜索能力对SDD-1算法得到的结果进行优化。最终,得到一个比较理想的查询执行策略。

根据上述发明构思,本发明专利采用的技术方案进一步完善为:首先构造一个查询图                                                ,然后循环运行SDD-1算法次。每次运行中,先计算查询图中所有双向半连接的收益。找出其中净收益最大的双向半连接操作,这里净收益值定为。将净收益值属于范围内的所有双向半连接操作归并为一个集合,以蒙特卡罗选择策略从集合中选择一个元素,其中,为收益阈值。如此重复,直到查询图上不存在双向半连接。由此,就得到了一个查询执行策略。重复执行SDD-1算法到指定次数,我们就能得到个不同的执行策略。将SDD-1算法运行得到的查询执行策略集作为遗传算法的输入。经过遗传算法优化后,得到最终的查询执行策略。该方法具体包括如下步骤:

1)、设置初始参数:包括对SDD-1算法初始参数的设置和对遗传算法初始参数的设置;

2)、获取查询执行策略集:从构建的查询图中寻找有益双向半连接,并从有益双向半连接候选集中选择有益双向半连接到有益双向半连接集合中,重复以上步骤,直到查询图中不存在有益双向半连接,将所得有益双向半连接集合的值添加到执行策略集合中,重复以上步骤,直到运行次数达到;

3)、构建遗传算法初始种群:对执行策略集合中的元素依次执行编码操作,并将所得结果作为遗传算法的初始种群;

4)、运行遗传算法:对种群重复执行交叉、变异、选择操作,直到运行次数达到;

5)、输出查询执行策略:将步骤4)输出种群中最好的个体作为最终结果,并将其解码为查询树,也即查询执行策略。

上述步骤1)中的设置初始参数的步骤如下:

 (1)、输入查询图,确定SDD-1执行次数,收益阈值,建立有益双向半连接集合和执行策略集合;

(2)、确定遗传算法迭代次数,交叉概率,变易概率。

上述步骤2)中的获取查询执行策略集的具体步骤如下:

(1)、评估查询图中所有半连接的收益;

(2)、选择有益双向半连接到集合中,同时修改查询图的静态特性;

(3)、循环执行步骤(1)和步骤(2),直到查询图中不存在有益双向半连接;

(4)、将有益双向半连接集合的值添加到执行策略集合中;

(5)、重复执行步骤1、步骤2、步骤3和步骤4,直到完成指定的迭代次数。

上述步骤3)中的构建遗传算法初始种群的具体步骤如下:

(1)、将执行策略集合中的所有元素都转化为查询树;

(2)、对查询树执行编码操作,利用编码所得结果构建遗传算法的初始种群。

上述步骤4)中的运行遗传算法的具体步骤如下:

(1)、对染色体实施交叉操作;

(2)、对染色体实施变异操作;

(3)、对染色体实施选择操作;

(4)、重复执行步骤(1)、步骤(2)和步骤(3),直到遗传算法的迭代次数达到。

上述步骤5)中的输出查询执行策略的具体步骤如下:

(1)、将遗传算法输出种群中最好的个体作为最终结果;

(2)、将最好的个体解码为查询树,也即查询执行策略,并输出。

本发明与现有技术相比较,具有如下显而易见的突出实质性特点和显著优点:对传统的SDD-1的算法进行了改进,并将SDD-1算法生成的执行策略集合作为遗传算法的初始种群。这种做法相比传统的SDD-1算法而言,在于将双向半连接引入到SDD-1算法中,从而一定程度上强化了SDD-1算法中输出的执行策略;将遗传算法引入到本算法中,虽然一定程度上增加了执行计划生成时间的代价,但是遗传算法的全局搜索能力在很大程度上克服了传统SDD-1算法贪婪特性导致的在全局搜索能力的欠缺。改进后的SDD-1算法在实际执行代价上有了很大的削减。

附图说明

图1是本发明一个实施例子的流程图。

图2是图1示例中的基于双向半连接的执行示意图。

图3是图1示例中的计划生成代价示意图。

图4是图1示例中的执行计划代价示意图。

具体实施方式

本发明专利的一个优选实施例子结合附图说明如下:基于改进型SDD-1算法的数据库多连接查询优化方法共分为五大步:(参见图1)

第一步:初始参数设置

1、输入查询图,将SDD-1算法的执行次数N设定为查询关系数目的2倍,收益阈值设置为本次迭代中最佳有益半连接收益值的20%,构造有益双向半连接集合和执行策略集合;

2、遗传算法的迭代次数设置为查询关系数目的3倍,交叉概率设置为0.95,变异概率设置为0.07。

第二步:获取查询执行策略集

1、评估查询图中所有双向半连接的收益:

设和的公共属性为,则有:

在给出具体计算步骤前,我门先给出了一般半连接程序操作过程的传输代价估算公式:

其中、均是与系统有关的常数。相当于站点间传输数据时,初始化所需的固定费用;而是网络传输数据的统一费用。

A)、在站点计算关系在属性上的投影,也即;

B)、把的结果从站点传到站点,其传输代价为:

其中为属性的长度,表示关系中属性不同值的个数;

C)、将 分成两大块,分别是和。指的是与匹配的,而恰恰相反,指的是与不匹配的,即:;

D)、将和较小的一块,即回送到站点,这里产生的代价为:

其中运算符用于求关系的元组数;

E)、利用站点回送过来的,将关系削减为。具体的操作分两种情况:

i、当站点回送的数据为时,执行: ;

ii、当站点回送的数据为时,执行: ;

在上述计算过程中,过程A)、C)、E)、不产生任何传输费用。于是,可以得到双向半连接的总代价为:

考虑到本方法应用的主要场合是较大规模的分布式查询,传输的费用这里予以忽略,经过约减,可以表示为:

相应的收益可以表示为:

这样,可以得到双向半连接的净收益为:

当大于0时,就认为该双向半连接是有益,图2给出了双向半连接的示意图。

2、选择有益双向半连接到集合中,同时修改查询图的静态特性:

A)、计算完查询图上所有双向半连接(设共有个),相应的净收益分别定义为,其中,找出其中具有最大净收益的双向半连接,这里定义为,将净收益满足大于的双向半连接归并到一个集合中,如下公式:

从采用蒙特卡罗算法,从集合中选取一个双向半连接,将其添加到集合中,具体是,集合 中,元素被选中的概率与其净收益值成正比,即元素被选中的概率为;这里需要注意的是,集合中的元素个数为1个时,直接将该有益半连接添加到集合中;

B)、修改查询图的静态特性。具体来讲,就是用缩减后的关系去代替缩减之前的关系。

3、判断查询图中是否还存在有益双向半连接:

A)、重复执行步骤1、步骤2和步骤3,直到查询图上不存在有益的双向半连接。

4、将有益双向半连接集合的值添加到执行策略集合中:

A)、将有益双向半连接集合中的元素整合成一个连接执行顺序,我们记为。然后,将添加到执行策略集合中。

5、重复执行步骤1、步骤2、步骤3和步骤4,直到完成指定的迭代次数。

第三步:构建遗传算法初始种群

1、将执行策略集合中的所有元素都转化为查询树;

2、对查询树执行编码操作,将所得染色体加入到遗传算法的初始种群中,查询树的编码步骤如下:

A)、将查询树上的所有连接操作用0进行替代,置自然数=0;

B)、中序遍历左子树,将遇到的第一个关系的数字代号标记为,并将其添加到编码序列中。将加1,并将自然数和对应关系添加到对应表中。若左子树为空则返回;

C)、将根节点(数字代号为0)添加到编码序列中;

D)、中序遍历右子树,将遇到的第一个关系的数字代号标记为,并将其添加到编码序列中。将加1,并将自然数和关系的对应关系添加到对应表中。若左子树为空则返回。

第四步:运行遗传算法

1、对染色体执行交叉操作:

A)、根据查询树编码的特殊性,采用了一种启发式交叉算法。新的交叉算法选取代价最小的染色体子序列进行交叉。在给出具体的步骤之前,有必要给出如下定义:

最小长度基因串定义:对于染色体,连接操作数为,叶节点数目为。则对于染色体中非零连续的基因数目共有个,在这些子串中,满足连接价值最小的长度基因串即为最小长度基因串;

       新交叉算子的具体操作步骤:对于父代染色体、。中长基因子串为,将中的剔除,得到。剔除中存在于中的所有基因,得到序列,剔除中存在于的所有基因,得到序列。将和拼接在一起得到。将和得到。可以发现,这种操作相比传统的多点交叉操作,更节约时间。

2、对染色体执行变异操作:

变异的概率通常情况下都设置的比较低(传统的范围为:0.001-0.1)。与交叉操作存在同样的问题,变异操作必须保证变异后的染色体满足一个连接操作树应具有的结构,为此,定义了两种变异操作:

A)、随机交换染色体个体中任意两个非零字符的位置,即在连接树中随机交换两个叶子节点。这种方式变异后,能保证连接树的树形不改变;

B)、对于要变异的连接树,随机地选取两棵子树,这里不对树的大小作限制,为的就是可以改变连接树的形状,增加了种群的多样性,有效地弥补了交叉算子产生新个体能力不足的问题。然后交换两棵子树的位置,子树的选取过程中要注意,其中一棵子树不能是另一棵子树的子树,否则将产生无效的操作。

3、对染色体执行选择操作:

选用最佳个体保留策略与轮盘赌选择法相结合的选择策略。最佳个体保留策略选择法对于种群中最优秀(适应度最高)的染色体不进行交叉和变异运算,而直接把它们复制到下一代,以免交叉和变异运算破坏种群中的优秀解,保证了遗传算法的收敛,但有可能因群体中优秀染色体的急剧增加而导致搜索陷入局部最优解,造成算法的全局搜索能力不强,因此选择轮盘赌选择法(也就是所谓的蒙特卡罗选择算法或适应度比例选择算法)与最佳个体保留策略相结合的选择策略。具体操作如下:

A)、首先,计算染色体的适应度,将染色体的适应度定义为查询树对应的连接代价的倒数,具体可以表示为:

其中即为染色体对应的适应度。为染色体对应的代价,主要考虑关系的连接代价,两个关系间的连接代价如下:

B)、其次,将第代的种群中的个体按适应度大小排序,适应度最大的排在第一位,适应度最小的排在最后一位,分别称为当前群体中的最佳个体和最差个体。若当前群体中最佳个体的适应度比历代最优个体的适应度高时,则复制当前群体中的最佳个体,并取代原先的最优个体而成为新的历代最优个体。反之,则不替代,仍保留原来的最优个体,并用历代最优个体替换当前群体中的最差个体而进入下一轮循环;

下面,给出选择概率的计算方法。设种群大小为,个体的适应度即为其对应的净收益,则在轮盘赌法中,第个染色体被选中的概率为: ,其中。

4、重复执行步骤(1)、步骤(2)和步骤(3),直到遗传算法的迭代次数达到。

第五步:输出查询执行策略

1、将遗传算法输出种群中最好的个体作为最终结果,即净收益值最大的执行策略;

2、对染色体执行解码操作,得到最优查询树,也即查询执行策略。具体的解码步骤如下:

A)、假定有染色体序列,遍历中序序列,找到形如的数字(字符)连续串,其中、均为非零数字(可以是字符)。将该类型的数字(字符)串构建为一颗完全二叉树,其中为左节点,为右节点。并将替换成,其中为本次满足的个数;

B)、重复以上步骤,直到序列中只有一个非零数字或字符。

实验结果

本实验所构造的分布式数据库查询实验平台是在实验室10台跨网段的机子上实现。为了更接近真实的分布式数据库的效果,每台机器上都使用了P2P软件来限速,上传和下载的速度均限制为。所用数据库是从所在实验室之前的一个大项目上移植过来的,经过一定处理,将实验所需要查询的数据表分布在不同的10台机子上。使用的开发环境:软件为WinXP +.NET2.0+MySQL5.0;硬件:Dell Precision 390。

下面给出了具体的实验室参数。SDD-1算法的迭代次数为关系数目的2倍;遗传算法的种群迭代次数设定为查询关系数目的3倍,交叉概率设定为0.95,变异概率设定为0.07。实验结果见表1和表2。

表1 计划生成代价

 表2 计划执行代价

 直观化结果见图3和图4。

这种改进的意义在于,虽然与纯粹的SDD-1算法相比,查询计划生成时间有了一定的增加,但是解的质量得到了有力的保证,这在已经成型的分布式数据库系统中是十分重要的。事实上,与实际查询时间相比,特别是对于一些经常使用的查询,查询计划生成时间上的适度增加几乎可以忽略。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号