基于greenplum数据库的查询优化-邹承明.pdf
《基于greenplum数据库的查询优化-邹承明.pdf》由会员分享,可在线阅读,更多相关《基于greenplum数据库的查询优化-邹承明.pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Journal of Computer Applications计算机应用,2018,38(2):478482ISSN 10019081CODEN JYIIDU20180210http:wwwjocacn文章编号:10019081(2018)02047805 DOI:10It772jissn100190812017081916基于Greenplum数据库的查询优化邹承明1一,谢义1扩,吴佩12(1交通物联网技术湖北省重点实验室(武汉理工大学),武汉430070;2武汉理工大学计算机科学与技术学院,武汉430070)(通信作者电子邮箱17607197069163corn)摘要:针对分布式数据库查
2、询效率随着数据规模的增大而降低的问题,以Greenplum分布式数据库为研究对象,从优化查询路径的角度提出一个基于代价的最优查询计划生成方法。首先,该方法设计一种有效的代价模型来估算查询代价;然后,采用并行最大最小蚁群算法来搜索具有最小查询代价的连接顺序,即最优连接顺序;最后,根据Greenplum数据库对查询计划中不同操作的默认最优选择得到最优查询计划。采用该方法在自主生成的数据集与事务处理性能理事会测试基准(TPC-H)的标准数据集上进行了多组实验。实验结果表明,所提出的优化方法能有效地搜索出最优解,获得最优的查询计划,从而提升Greenplum数据库的查询效率。关键词:分布式数据库;Gr
3、eenpl啪数据库;最优查询计划;代价模型;最优连接顺序中图分类号:TP311 文献标志码:AQuery optimization based on Greenplum databaseZOU Chengmin91一,XIE Yil”,WU Peil2(1Hubei Key Laboratory of Transportation Intemet of Things(Wuhan University ofhno锄),Wuhan Hubei 430070,China;2&hool of Computer&ience and Technology,Wuhan Universe,of Technol
4、ogy,Wulmn Hubei 430070,China)Abstract:In order to solve the problem that the query efficiency of distributed database decreases witIl the increase ofdata scale,the Greenplum distributed database was takenthe research object,and a cost-based optimal query plangeneration scheme was proposed from the p
5、erspective of optimizing the query pathFirstly,an effective cost model Wasdesigned to estimate the query costThe parallel maximunl and minimum ant colony algorithm Was then used to search the joinorder with the minimum query cost,iethe optimal join orderFinally,the optimal query plan Was obtained ba
6、sed on theGreenplum databaseS default optimal choice for different operations in the query planMuhiple experiments were carried outon the serf-generatod data set and Transaction Processing Performance Council Benchmark H(TPCH)standard data set byusing the propesod schemeThe experimental results show
7、 that the proposed optimization scheme can effectively search out theoptimal solution and obtain the optimal query plan,SO as to improve the query efficiency of Greenplum databaseKey words:distributed database;Greenplum database;optimal query plan;cost model;optimal join order0 引言在如今大数据时代的背景下,为了满足大规
8、模数据处理及分析的需求,分布式数据库应运而生,并逐渐取代集中式数据库成为当今主流的数据分析系统。但同时,大规模数据的增长降低了分布式数据库的查询效率,如何提升查询效率是分布式数据库领域中的热点和难点。近年来,有不少学者进行了寻求查询优化方案的研究,其中,对数据库系统架构和数据处理方式的创新是优化分布式数据库的重要途径。无共享架构(Sharednothing architecture)是在分布式数据库优化过程中产生的一种集群架构。BigTable口j、Googh FileSystem【3 J、MapReduce【41等都是典型的大规模并行处理(Massive Parallel Processin
9、g,MPP)架构,它们的成功推动了无共享架构集群的发展。Greenplum”o是目前最先进的分布式开源数据库技术之一,其高度并行性的优势将推动并促进基于MPP架构的分布式数据库的发展与流行J。查询操作是分布式数据库对用户提供的最基本服务。本文将从最优查询计划生成方法的角度来对Greenplum数据库的查询操作进行优化。最优查询计划的生成问题是一个最优解的求解问题。对于最优解的求解,有两种典型的方法:基于启发式的方法和随机搜索方法。动态规划是典型的基于启发式的方法。文献78都利用动态规划解决优化问题,并将其应用到查询优化中,这种方法虽然能得到最优解,但随着连接关系数的不断增大,搜索效率会变得非常
10、低,因此动态规划算法不太适合大规模数据场景下复杂的多表连接查询的优化问题。遗传算法作为一种有效的随机搜索算法,随着问题规模的增大,其优势会比较明显一j。文献10将遗传算法应用于分布式数据库查询计划生成,与动态规划相比,这种方法的搜索效率更高,但是该方法不一定能保证获得最优解,而且该方法的好坏依赖于种群的初始化、变异交叉操作的选择以及适应度函数的选择。蚁群算法也是一种有效的随机搜索算法。文献11提出了一种基于蚁群算法的方法来减少查询收稿日期:20170731;修回日期:201709-08。基金项目:国家自然科学基金资助项目(61503289);湖北省科技支撑计划项目(2015BAAl20,201
11、5BCE068)。作者简介:邹承明(1975一),男,广东徐闻人,教授,博士,CCF会员,主要研究方向:计算机视觉、嵌人式系统、软件理论与方法; 谢义(199l一),男,湖南邵东人,硕士研究生,主要研究方向:软件定义、数据迁移;吴佩(1993一),女,湖北武汉人,硕士研究生,主要研究方向:图形图像处理。万方数据第2期 邹承明等:基于Greenplum数据库的查询优化 479过程中连接操作产生的代价,从而获得一个关系数据库复杂查询的最优查询计划;但是该方法的代价模型中只考虑了连接操作产生的代价,忽略了分布式数据库节点之间的数据传输代价。文献12提出了最大最小蚁群算法,这种改进的蚁群算法进一步解决
12、了算法过早收敛的问题,求解效率更高。经过对上述文献中算法的对比,本文基于文献12的算法提出了一种并行最大最小蚁群算法来搜索最优连接顺序。基于以上研究,为了提升Greenplum数据库的查询效率,本文提出了一种有效的基于代价的最优查询计划生成方法,并通过实验验证了其有效性。1 代价模型基于代价的查询优化是MPP数据库的核心技术。Greenplum数据库的查询优化器就是以代价作为目标,搜索具有最小代价的查询计划”。这种基于代价的查询优化首先根据一个查询语句的逻辑生成树,预估每个查询策略的代价,然后从中选择代价最小的路径作为最终的物理执行计划。因此,代价预估是基于代价的查询优化中的一个重要问题。本文
13、通过对分布式数据库查询代价的组成进行分析,设计了一个有效的查询代价模型。通过这个代价模型,在任务实际执行之前,能够预估整个任务完成的总代价。一般情况下,集中式数据库系统的总查询代价公式为:c。“=CcPU+CL,o,其中CcPU表示CPU代价,Cvo表示I0代价。但是,分布式数据库是由节点之间互相协作完成整个查询任务,节点之间的交互同时会产生通信代价C一,所以,分布式数据库的总查询代价公式可表示为:C训=C。州+C。+c。通信代价的估算可以通过式(1)来实现,其中x表示需要传输的数据量,c0和C,是两个常量系数。C(X)=Co+C1X (1)11相关参数分布式数据库系统中一般都会存储着数据表的
14、统计信息,这些统计信息可以用来对代价进行估计。这类信息通常存储在数据库的数据字典中,供查询优化器使用m-。从Greenplum数据库的数据字典中可以获得代价估计所需的统计信息。Greenplum数据库对代价的估计忽略了数据传输的代价,因此,本文将数据传输的代价考虑进来,提出了一种新的代价模型。该模型需要从数据字典中获取的参数主要是l别和y(a,R)。其中:I R I表示关系R中的元组数,V(a,R)表示关系R中的属性n所具有的不同值的数目。12代价估算假设给定一个连接S=R。join R:,R。和尺2是两个要连接的关系表。从数据传输代价Cost。(s)和连接产生的数据量Costi。i。(5)两
15、个方面来对该连接进行代价估算,如式(2)所示:Costtotal(S)=Cost(|s)+Costioill(S) (2)1)数据传输代价:影响数据传输代价的最主要因素是进行连接的关系表的规模大小。但是,在网络传输速度很快的情况下,数据传输的代价相对CPU对数据进行处理的代价影响较小。为了统一计算连接的代价,本文为数据传输代价设置一个权值,数据传输代价如式(3)所示:C伽t(S)=女(I尺l I+I R2 I) (3)2)连接产生的数据量:某一个连接产生的数据量越大,那么该连接产生的代价就越大,针对该连接的下一个连接的代价也就更大。因此,本文将连接产生的数据量作为连接的代价。对于连接S=R。j
16、oin R2,连接中属性所具有的不同值的数目可通过式(4)计算:ry(a,R1), aR1一R2V(aS)=V(a,R2), 口R2一RlLmax(V(,R1),V(a,R2),aRl n R2(4)设Attr为关系表R。和恐的公共属性集合,连接产生的数据量可以用式(5)来表示:Costjoi(s):百堕业L一(5) 兀max(V(Attri,R1),V(Attri,R2)在分布式数据库中,一个多表连接查询语句的查询执行计划都是用一棵连接树来表示的。假设用连接树的内节点|s;(i=1,2,n一1)来表示中间连接关系,那么该连接树内所有内节点S的代价总和就可以表示某一个查询计划的总代价。可以用式
17、(6)来表示一个多表连接查询执行计划的代价模型:Cos洲(|s)=(Cosjoin(s)+Co豇。(s1) (6)2并行最大最小蚁群算法Greenplum数据库中的复杂查询基本上都会涉及到跨表查询。跨表查询的一个最基本操作就是连接,而连接操作也是分布式数据库中一个关键的操作。在连接操作中,内连接满足交换律,而外连接和子查询都可通过一定方式转换为内连接“。通常情况下,两个关系表之间的连接操作是最耗时的操作之一【I“,因此,涉及到连接操作的处理代价是影响复杂查询语句代价的主要因素,这种连接代价主要取决于给定的查询语句中所涉及到的关系表的连接顺序。假设数据库中有三个关系表矗,、恐和凡,这三个表所有可
18、能的连接顺序有:(R。R2)R3,R。(R2R,)和(R。玛)R:。不同的连接顺序会产生不同的查询计划代价,搜索最优的连接顺序对提升查询效率起着重要作用,因此,对连接顺序进行优化是分布式数据库多表连接查询的一个研究重点。一般情况下,影响连接顺序优化的因素有以下三个:搜索空间、代价模型和搜索策略。本文在进行连接顺序优化过程中,采用第1章中设计的代价模型;对于搜索策略,本文实现了一种并行化最大最小蚁群算法来解决最优解搜索问题。将蚁群算法应用到多表连接顺序优化问题中时,要注意在每次选中连接表进行连接之后,对表的规模和连接进行重新计算。下面将详细介绍并行最大最小蚁群算法应用到连接顺序优化问题中的一般过
19、程,包括:信息初始化、转移概率计算、信息素更新、表规模更新以及并行化处理。1)信息初始化。对各路径信息素进行初始值设定,设妒表示初始信息素,令妒=C,其中为c常数。2)转移概率。对第t代循环,蚂蚁个体Ai从节点i转移到J的概率的可用式(7)计算:f型生鲎塑 i i;矿砖(t)=妒;(t)前(t)。一” (7)【o, 其他其中:妒。(t)表示边(i,)的信息素强度;a表示轨迹的相对重要性;口为期望的相对重要性;矿表示一个关系表的集合,万方数据计算机应用 第38卷这个集合中的元素是所有还未被蚂蚁k选择的所有关系表;7。(t)=1Cost。表示关系表i转移到关系表,的期望程度,其中Costi表示两个
20、关系表连接的代价。3)信息素更新。最大最小蚁群算法对传统蚁群算法的改进之处在于改进信息素更新的方式。最大最小蚁群算法分别采用局部信息素和全局信息素来进行信息素的更新。其中,局部信息素可通过式(8)来进行更新,对每只蚂蚁,只进行一次局部信息素的更新。妒i(t+1)=却“(t)+(16)妒i(t) (8)在进行路径搜索时,依照式(7)计算出的转移概率,蚂蚁会根据概率大小在可选集中选择出下一步要连接的关系表。9i(t)模拟初始时刻连接边(i,J)的信息素量;6表示蒸发因子,它是一个O到I的常数。设置艿的目的是防止蚂蚁由于过早收敛而陷入局部最优解。最大最小蚁群算法在所有蚂蚁完成连接之后,会搜索出一条当
21、前代价最小的连接顺序,经过这条连接顺序的蚂蚁个体被选择成为最佳蚂蚁。算法规定只有这些被选出的最佳蚂蚁可以在经过的路径上留下信息素。也就是说,最大最小蚁群算法对传统蚁群算法的一个改进之处是增强最优解的信息素。同时,最大最小蚁群算法还会削减选出的最差路径上的信息素强度,这个削减操作是为了保证蚂蚁更快地集中到最优路径周围。最大最小蚁群算法的全局信息素更新方式可由式(9)一(12)表示。妒尹(t+凡)=艿妒i(t)+(16)妒dbeat(t) (9)妒“(t+n)=6妒g(t)+(1一艿)A妒(t) (10)妒宇“(f)=lb。 (11)妒:。“(t)=l。 (12)其中妒。(t+n)表示在所有蚂蚁完
22、成所有关系表的连接后得到的最优连接顺序中边(i,)上的信息素;蛔代表此次迭代过程中的最优连接顺序的代价;一。表示此次迭代过程中最差连接顺序的代价。4)表规模更新。利用蚁群算法处理多表连接顺序优化的过程中,不同于传统旅行商问题的一点是:每次连接时,可选集中会删除被连接的表,同时,被选中的表的规模会发生变化。将a。表示为表A连接表B之后的表B的规模,即:I曰l=c。表曰中的属性会与表A中的属性集合并,表曰的属性规模可由式(13)计算,其中Attr表示A与曰的公共属性集合。V(Attrf,B)=max(V(Attri,A),V(Attri,B), AttriAttr ,IV(AttriIA)+V(A
23、ttri,曰), A浙萑A柳5)将最大最小蚁群算法运用到大规模数据表的多表连接查询优化问题中时,算法的搜索时间比较长。针对这一缺陷,本文结合分布式数据库并行性的特点对最大最小蚁群算法进行并行化处理,以达到更快获得最优解的目的。最大最小蚁群算法的并行一般有两种方式:细粒度的蚂蚁并行方式和粗粒度的蚁群并行方式。前者以个体为并行单位,可通过消息传递和分布式共享内存的编程模型,以主从模式将蚂蚁个体分配给不同的处理单元来实现并行化,但是这种并行方式会带来处理单元之间频繁的通信消耗;后者以种群为并行单位,也可以通过消息传递和共享变量两种并行编程模型来实现,该方式将蚂蚁种群分配给不同的处理单元来计算,减少了
24、处理单元之间的消息传递。本文的并行化是通过粗粒度的种群并行方式,采用基于共享变量模型的Pthread库,将含有相同数量的蚁群分配给多个线程并行处理(设置蚁群数量相等是为了均衡处理单元的运算负载),以提高搜索效率,从而提升Greenplum数据库的查询性能。并行最大最小蚁群算法相对于串行最大最小蚁群算法的区别在于,每个蚁群的蚂蚁在经过局部信息素更新之后,会影响到所有蚁群的蚂蚁的前进路线,因为信息素矩阵是被所有蚂蚁共享的,但是局部信息素的更新会较频繁地访问信息素矩阵,导致同步操作增加而影响算法的运行效率,为此,本文对每只蚂蚁进行限制,只进行一次局部信息素的更新。最大最小蚁群算法并行化的过程如算法1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 greenplum 数据库 查询 优化 邹承明
限制150内