国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Greenplum數(shù)據(jù)庫(kù)的查詢優(yōu)化

2018-04-12 07:18鄒承明
計(jì)算機(jī)應(yīng)用 2018年2期
關(guān)鍵詞:代價(jià)語(yǔ)句分布式

鄒承明,謝 義,吳 佩

(1.交通物聯(lián)網(wǎng)技術(shù)湖北省重點(diǎn)實(shí)驗(yàn)室(武漢理工大學(xué)),武漢 430070; 2.武漢理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,武漢 430070)(*通信作者電子郵箱17607197069@163.com)

0 引言

在如今大數(shù)據(jù)時(shí)代的背景下,為了滿足大規(guī)模數(shù)據(jù)處理及分析的需求,分布式數(shù)據(jù)庫(kù)應(yīng)運(yùn)而生,并逐漸取代集中式數(shù)據(jù)庫(kù)成為當(dāng)今主流的數(shù)據(jù)分析系統(tǒng)。但同時(shí),大規(guī)模數(shù)據(jù)的增長(zhǎng)降低了分布式數(shù)據(jù)庫(kù)的查詢效率,如何提升查詢效率是分布式數(shù)據(jù)庫(kù)領(lǐng)域中的熱點(diǎn)和難點(diǎn)。近年來(lái),有不少學(xué)者進(jìn)行了尋求查詢優(yōu)化方案的研究,其中,對(duì)數(shù)據(jù)庫(kù)系統(tǒng)架構(gòu)和數(shù)據(jù)處理方式的創(chuàng)新是優(yōu)化分布式數(shù)據(jù)庫(kù)的重要途徑。無(wú)共享架構(gòu)(Shared-nothing architecture)[1]是在分布式數(shù)據(jù)庫(kù)優(yōu)化過(guò)程中產(chǎn)生的一種集群架構(gòu)。BigTable[2]、Google File System[3]、MapReduce[4]等都是典型的大規(guī)模并行處理(Massive Parallel Processing, MPP)架構(gòu),它們的成功推動(dòng)了無(wú)共享架構(gòu)集群的發(fā)展。Greenplum[5]是目前最先進(jìn)的分布式開源數(shù)據(jù)庫(kù)技術(shù)之一,其高度并行性的優(yōu)勢(shì)將推動(dòng)并促進(jìn)基于MPP架構(gòu)的分布式數(shù)據(jù)庫(kù)的發(fā)展與流行[6]。

查詢操作是分布式數(shù)據(jù)庫(kù)對(duì)用戶提供的最基本服務(wù)。本文將從最優(yōu)查詢計(jì)劃生成方法的角度來(lái)對(duì)Greenplum數(shù)據(jù)庫(kù)的查詢操作進(jìn)行優(yōu)化。最優(yōu)查詢計(jì)劃的生成問(wèn)題是一個(gè)最優(yōu)解的求解問(wèn)題。對(duì)于最優(yōu)解的求解,有兩種典型的方法:基于啟發(fā)式的方法和隨機(jī)搜索方法。動(dòng)態(tài)規(guī)劃是典型的基于啟發(fā)式的方法。文獻(xiàn)[7-8]都利用動(dòng)態(tài)規(guī)劃解決優(yōu)化問(wèn)題,并將其應(yīng)用到查詢優(yōu)化中,這種方法雖然能得到最優(yōu)解,但隨著連接關(guān)系數(shù)的不斷增大,搜索效率會(huì)變得非常低,因此動(dòng)態(tài)規(guī)劃算法不太適合大規(guī)模數(shù)據(jù)場(chǎng)景下復(fù)雜的多表連接查詢的優(yōu)化問(wèn)題。遺傳算法作為一種有效的隨機(jī)搜索算法,隨著問(wèn)題規(guī)模的增大,其優(yōu)勢(shì)會(huì)比較明顯[9]。文獻(xiàn)[10]將遺傳算法應(yīng)用于分布式數(shù)據(jù)庫(kù)查詢計(jì)劃生成,與動(dòng)態(tài)規(guī)劃相比,這種方法的搜索效率更高,但是該方法不一定能保證獲得最優(yōu)解,而且該方法的好壞依賴于種群的初始化、變異交叉操作的選擇以及適應(yīng)度函數(shù)的選擇。蟻群算法也是一種有效的隨機(jī)搜索算法。文獻(xiàn)[11]提出了一種基于蟻群算法的方法來(lái)減少查詢過(guò)程中連接操作產(chǎn)生的代價(jià),從而獲得一個(gè)關(guān)系數(shù)據(jù)庫(kù)復(fù)雜查詢的最優(yōu)查詢計(jì)劃;但是該方法的代價(jià)模型中只考慮了連接操作產(chǎn)生的代價(jià),忽略了分布式數(shù)據(jù)庫(kù)節(jié)點(diǎn)之間的數(shù)據(jù)傳輸代價(jià)。文獻(xiàn)[12]提出了最大最小蟻群算法,這種改進(jìn)的蟻群算法進(jìn)一步解決了算法過(guò)早收斂的問(wèn)題,求解效率更高。經(jīng)過(guò)對(duì)上述文獻(xiàn)中算法的對(duì)比,本文基于文獻(xiàn)[12]的算法提出了一種并行最大最小蟻群算法來(lái)搜索最優(yōu)連接順序。

基于以上研究,為了提升Greenplum數(shù)據(jù)庫(kù)的查詢效率,本文提出了一種有效的基于代價(jià)的最優(yōu)查詢計(jì)劃生成方法,并通過(guò)實(shí)驗(yàn)驗(yàn)證了其有效性。

1 代價(jià)模型

基于代價(jià)的查詢優(yōu)化是MPP數(shù)據(jù)庫(kù)的核心技術(shù)。Greenplum數(shù)據(jù)庫(kù)的查詢優(yōu)化器就是以代價(jià)作為目標(biāo),搜索具有最小代價(jià)的查詢計(jì)劃[13]。這種基于代價(jià)的查詢優(yōu)化首先根據(jù)一個(gè)查詢語(yǔ)句的邏輯生成樹,預(yù)估每個(gè)查詢策略的代價(jià),然后從中選擇代價(jià)最小的路徑作為最終的物理執(zhí)行計(jì)劃。因此,代價(jià)預(yù)估是基于代價(jià)的查詢優(yōu)化中的一個(gè)重要問(wèn)題。本文通過(guò)對(duì)分布式數(shù)據(jù)庫(kù)查詢代價(jià)的組成進(jìn)行分析,設(shè)計(jì)了一個(gè)有效的查詢代價(jià)模型。通過(guò)這個(gè)代價(jià)模型,在任務(wù)實(shí)際執(zhí)行之前,能夠預(yù)估整個(gè)任務(wù)完成的總代價(jià)。

一般情況下,集中式數(shù)據(jù)庫(kù)系統(tǒng)的總查詢代價(jià)公式為:Ctotal=CCPU+CI/O,其中CCPU表示CPU代價(jià),CI/O表示I/O代價(jià)。但是,分布式數(shù)據(jù)庫(kù)是由節(jié)點(diǎn)之間互相協(xié)作完成整個(gè)查詢?nèi)蝿?wù),節(jié)點(diǎn)之間的交互同時(shí)會(huì)產(chǎn)生通信代價(jià)Ctrans,所以,分布式數(shù)據(jù)庫(kù)的總查詢代價(jià)公式可表示為:Ctotal=CCPU+CI/O+Ctrans。通信代價(jià)的估算可以通過(guò)式(1)來(lái)實(shí)現(xiàn),其中X表示需要傳輸?shù)臄?shù)據(jù)量,C0和C1是兩個(gè)常量系數(shù)。

Ctrans(X)=C0+C1*X

(1)

1.1 相關(guān)參數(shù)

分布式數(shù)據(jù)庫(kù)系統(tǒng)中一般都會(huì)存儲(chǔ)著數(shù)據(jù)表的統(tǒng)計(jì)信息,這些統(tǒng)計(jì)信息可以用來(lái)對(duì)代價(jià)進(jìn)行估計(jì)。這類信息通常存儲(chǔ)在數(shù)據(jù)庫(kù)的數(shù)據(jù)字典中,供查詢優(yōu)化器使用[6]。從Greenplum數(shù)據(jù)庫(kù)的數(shù)據(jù)字典中可以獲得代價(jià)估計(jì)所需的統(tǒng)計(jì)信息。Greenplum數(shù)據(jù)庫(kù)對(duì)代價(jià)的估計(jì)忽略了數(shù)據(jù)傳輸?shù)拇鷥r(jià),因此,本文將數(shù)據(jù)傳輸?shù)拇鷥r(jià)考慮進(jìn)來(lái),提出了一種新的代價(jià)模型。該模型需要從數(shù)據(jù)字典中獲取的參數(shù)主要是|R|和V(a,R)。其中:|R|表示關(guān)系R中的元組數(shù),V(a,R)表示關(guān)系R中的屬性a所具有的不同值的數(shù)目。

1.2 代價(jià)估算

假設(shè)給定一個(gè)連接S=R1joinR2,R1和R2是兩個(gè)要連接的關(guān)系表。從數(shù)據(jù)傳輸代價(jià)Costtrans(S)和連接產(chǎn)生的數(shù)據(jù)量Costjoin(S)兩個(gè)方面來(lái)對(duì)該連接進(jìn)行代價(jià)估算,如式(2)所示:

Costtotal(S)=Costtrans(S)+Costjoin(S)

(2)

1)數(shù)據(jù)傳輸代價(jià):影響數(shù)據(jù)傳輸代價(jià)的最主要因素是進(jìn)行連接的關(guān)系表的規(guī)模大小。但是,在網(wǎng)絡(luò)傳輸速度很快的情況下,數(shù)據(jù)傳輸?shù)拇鷥r(jià)相對(duì)CPU對(duì)數(shù)據(jù)進(jìn)行處理的代價(jià)影響較小。為了統(tǒng)一計(jì)算連接的代價(jià),本文為數(shù)據(jù)傳輸代價(jià)設(shè)置一個(gè)權(quán)值ω,數(shù)據(jù)傳輸代價(jià)如式(3)所示:

Costtrans(S)=ω*(|R1|+|R2|)

(3)

2)連接產(chǎn)生的數(shù)據(jù)量:某一個(gè)連接產(chǎn)生的數(shù)據(jù)量越大,那么該連接產(chǎn)生的代價(jià)就越大,針對(duì)該連接的下一個(gè)連接的代價(jià)也就更大。因此,本文將連接產(chǎn)生的數(shù)據(jù)量作為連接的代價(jià)。對(duì)于連接S=R1joinR2,連接中屬性所具有的不同值的數(shù)目可通過(guò)式(4)計(jì)算:

(4)

設(shè)Attr為關(guān)系表R1和R2的公共屬性集合,連接產(chǎn)生的數(shù)據(jù)量可以用式(5)來(lái)表示:

(5)

在分布式數(shù)據(jù)庫(kù)中,一個(gè)多表連接查詢語(yǔ)句的查詢執(zhí)行計(jì)劃都是用一棵連接樹來(lái)表示的。假設(shè)用連接樹的內(nèi)節(jié)點(diǎn)Si(i=1,2,…,n-1)來(lái)表示中間連接關(guān)系,那么該連接樹內(nèi)所有內(nèi)節(jié)點(diǎn)S的代價(jià)總和就可以表示某一個(gè)查詢計(jì)劃的總代價(jià)。可以用式(6)來(lái)表示一個(gè)多表連接查詢執(zhí)行計(jì)劃的代價(jià)模型:

(6)

2 并行最大最小蟻群算法

Greenplum數(shù)據(jù)庫(kù)中的復(fù)雜查詢基本上都會(huì)涉及到跨表查詢。跨表查詢的一個(gè)最基本操作就是連接,而連接操作也是分布式數(shù)據(jù)庫(kù)中一個(gè)關(guān)鍵的操作。在連接操作中,內(nèi)連接滿足交換律,而外連接和子查詢都可通過(guò)一定方式轉(zhuǎn)換為內(nèi)連接[14]。通常情況下,兩個(gè)關(guān)系表之間的連接操作是最耗時(shí)的操作之一[15],因此,涉及到連接操作的處理代價(jià)是影響復(fù)雜查詢語(yǔ)句代價(jià)的主要因素,這種連接代價(jià)主要取決于給定的查詢語(yǔ)句中所涉及到的關(guān)系表的連接順序。假設(shè)數(shù)據(jù)庫(kù)中有三個(gè)關(guān)系表R1、R2和R3,這三個(gè)表所有可能的連接順序有:(R1R2)R3,R1(R2R3)和(R1R3)R2。不同的連接順序會(huì)產(chǎn)生不同的查詢計(jì)劃代價(jià),搜索最優(yōu)的連接順序?qū)μ嵘樵冃势鹬匾饔?,因此,?duì)連接順序進(jìn)行優(yōu)化是分布式數(shù)據(jù)庫(kù)多表連接查詢的一個(gè)研究重點(diǎn)。一般情況下,影響連接順序優(yōu)化的因素有以下三個(gè):搜索空間、代價(jià)模型和搜索策略。本文在進(jìn)行連接順序優(yōu)化過(guò)程中,采用第1章中設(shè)計(jì)的代價(jià)模型;對(duì)于搜索策略,本文實(shí)現(xiàn)了一種并行化最大最小蟻群算法來(lái)解決最優(yōu)解搜索問(wèn)題。

將蟻群算法應(yīng)用到多表連接順序優(yōu)化問(wèn)題中時(shí),要注意在每次選中連接表進(jìn)行連接之后,對(duì)表的規(guī)模和連接進(jìn)行重新計(jì)算。下面將詳細(xì)介紹并行最大最小蟻群算法應(yīng)用到連接順序優(yōu)化問(wèn)題中的一般過(guò)程,包括:信息初始化、轉(zhuǎn)移概率計(jì)算、信息素更新、表規(guī)模更新以及并行化處理。

1)信息初始化。對(duì)各路徑信息素進(jìn)行初始值設(shè)定,設(shè)φ表示初始信息素,令φ=C,其中為C常數(shù)。

2)轉(zhuǎn)移概率。對(duì)第t代循環(huán),螞蟻個(gè)體Aij從節(jié)點(diǎn)i轉(zhuǎn)移到j(luò)的概率的可用式(7)計(jì)算:

(7)

其中:φij(t)表示邊(i,j)的信息素強(qiáng)度;α表示軌跡的相對(duì)重要性;β為期望的相對(duì)重要性;Wk表示一個(gè)關(guān)系表的集合,這個(gè)集合中的元素是所有還未被螞蟻k選擇的所有關(guān)系表;ηij(t)=1/Costij表示關(guān)系表i轉(zhuǎn)移到關(guān)系表j的期望程度,其中Costij表示兩個(gè)關(guān)系表連接的代價(jià)。

3)信息素更新。最大最小蟻群算法對(duì)傳統(tǒng)蟻群算法的改進(jìn)之處在于改進(jìn)信息素更新的方式。最大最小蟻群算法分別采用局部信息素和全局信息素來(lái)進(jìn)行信息素的更新。其中,局部信息素可通過(guò)式(8)來(lái)進(jìn)行更新,對(duì)每只螞蟻,只進(jìn)行一次局部信息素的更新。

φij(t+1)=δφij(t)+(1-δ)Δφij(t)

(8)

在進(jìn)行路徑搜索時(shí),依照式(7)計(jì)算出的轉(zhuǎn)移概率,螞蟻會(huì)根據(jù)概率大小在可選集中選擇出下一步要連接的關(guān)系表。Δφij(t)模擬初始時(shí)刻連接邊(i,j)的信息素量;δ表示蒸發(fā)因子,它是一個(gè)0到1的常數(shù)。設(shè)置δ的目的是防止螞蟻由于過(guò)早收斂而陷入局部最優(yōu)解。

最大最小蟻群算法在所有螞蟻完成連接之后,會(huì)搜索出一條當(dāng)前代價(jià)最小的連接順序,經(jīng)過(guò)這條連接順序的螞蟻個(gè)體被選擇成為最佳螞蟻。算法規(guī)定只有這些被選出的最佳螞蟻可以在經(jīng)過(guò)的路徑上留下信息素。也就是說(shuō),最大最小蟻群算法對(duì)傳統(tǒng)蟻群算法的一個(gè)改進(jìn)之處是增強(qiáng)最優(yōu)解的信息素。同時(shí),最大最小蟻群算法還會(huì)削減選出的最差路徑上的信息素強(qiáng)度,這個(gè)削減操作是為了保證螞蟻更快地集中到最優(yōu)路徑周圍。最大最小蟻群算法的全局信息素更新方式可由式(9)~(12)表示。

(9)

(10)

(11)

(12)

其中φij(t+n)表示在所有螞蟻完成所有關(guān)系表的連接后得到的最優(yōu)連接順序中邊(i,j)上的信息素;Lbest代表此次迭代過(guò)程中的最優(yōu)連接順序的代價(jià);Lworst表示此次迭代過(guò)程中最差連接順序的代價(jià)。

4)表規(guī)模更新。利用蟻群算法處理多表連接順序優(yōu)化的過(guò)程中,不同于傳統(tǒng)旅行商問(wèn)題的一點(diǎn)是:每次連接時(shí),可選集中會(huì)刪除被連接的表,同時(shí),被選中的表的規(guī)模會(huì)發(fā)生變化。將CAB表示為表A連接表B之后的表B的規(guī)模,即:|B|=CAB。表B中的屬性會(huì)與表A中的屬性集合并,表B的屬性規(guī)??捎墒?13)計(jì)算,其中Attr表示A與B的公共屬性集合。

V(Attri,B)=

(13)

5)將最大最小蟻群算法運(yùn)用到大規(guī)模數(shù)據(jù)表的多表連接查詢優(yōu)化問(wèn)題中時(shí),算法的搜索時(shí)間比較長(zhǎng)。針對(duì)這一缺陷,本文結(jié)合分布式數(shù)據(jù)庫(kù)并行性的特點(diǎn)對(duì)最大最小蟻群算法進(jìn)行并行化處理,以達(dá)到更快獲得最優(yōu)解的目的。最大最小蟻群算法的并行一般有兩種方式:細(xì)粒度的螞蟻并行方式和粗粒度的蟻群并行方式。前者以個(gè)體為并行單位,可通過(guò)消息傳遞和分布式共享內(nèi)存的編程模型,以主從模式將螞蟻個(gè)體分配給不同的處理單元來(lái)實(shí)現(xiàn)并行化,但是這種并行方式會(huì)帶來(lái)處理單元之間頻繁的通信消耗;后者以種群為并行單位,也可以通過(guò)消息傳遞和共享變量?jī)煞N并行編程模型來(lái)實(shí)現(xiàn),該方式將螞蟻種群分配給不同的處理單元來(lái)計(jì)算,減少了處理單元之間的消息傳遞。

本文的并行化是通過(guò)粗粒度的種群并行方式,采用基于共享變量模型的Pthread庫(kù),將含有相同數(shù)量的蟻群分配給多個(gè)線程并行處理(設(shè)置蟻群數(shù)量相等是為了均衡處理單元的運(yùn)算負(fù)載),以提高搜索效率,從而提升Greenplum數(shù)據(jù)庫(kù)的查詢性能。并行最大最小蟻群算法相對(duì)于串行最大最小蟻群算法的區(qū)別在于,每個(gè)蟻群的螞蟻在經(jīng)過(guò)局部信息素更新之后,會(huì)影響到所有蟻群的螞蟻的前進(jìn)路線,因?yàn)樾畔⑺鼐仃囀潜凰形浵伖蚕淼模蔷植啃畔⑺氐母聲?huì)較頻繁地訪問(wèn)信息素矩陣,導(dǎo)致同步操作增加而影響算法的運(yùn)行效率,為此,本文對(duì)每只螞蟻進(jìn)行限制,只進(jìn)行一次局部信息素的更新。

最大最小蟻群算法并行化的過(guò)程如算法1所示。首先根據(jù)并行度同時(shí)運(yùn)行數(shù)量相等的k只螞蟻的種群的迭代過(guò)程。對(duì)每一個(gè)種群,按照最大最小蟻群算法的搜索過(guò)程得到最優(yōu)路徑。將所有種群的路徑提交給主線程之后,選擇更優(yōu)的路徑,并更新全局信息素。迭代以上過(guò)程,直到得到最終的最優(yōu)路徑。

算法1并行最大最小蟻群算法。

Input:n個(gè)表及其規(guī)模大小;

Output:最優(yōu)連接順序。

1)

Initiation:并行度P,螞蟻數(shù)量K,α,β,全局迭代次數(shù)N1,局部迭代次數(shù)N2

2)

fori=1 toN1

//全局迭代

3)

do parallel

//并行化處理

4)

forj=1 toN2

//局部迭代

5)

fork=1 toK

//選擇擁有k只螞蟻的種群進(jìn)行迭代

6)

初始化可選集Wk,信息素濃度φ;

7)

whileWk≠? do

8)

隨機(jī)選取Wk中的一個(gè)表A作為起點(diǎn),將表A從Wk中刪除,更新Wk;

9)

計(jì)算轉(zhuǎn)移概率并根據(jù)結(jié)果選取一個(gè)表B與表A連接;

10)

修改被選中的表B的規(guī)模,|B|=CAB;局部更新信息素濃度;

11)

end while

12)

end for

13)

end for

14)

提交最優(yōu)路徑;

15)

end do

16)

修改全局最優(yōu)路徑,全局更新信息素濃度;

17)

end for

3 實(shí)驗(yàn)結(jié)果及分析

實(shí)驗(yàn)環(huán)境是Greenplum數(shù)據(jù)庫(kù)集群,該集群有4個(gè)節(jié)點(diǎn):1個(gè)主節(jié)點(diǎn),3個(gè)子節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)的實(shí)驗(yàn)平臺(tái)均采用2.5 GHz雙核處理器,8 GB內(nèi)存,CentOS 7操作系統(tǒng),Greenplum數(shù)據(jù)庫(kù)的版本號(hào)是greenplum-db-gpdb-14b78f4。為了滿足對(duì)比實(shí)驗(yàn)的公平性原則,基于MySQL數(shù)據(jù)庫(kù)與PostgreSQL數(shù)據(jù)庫(kù)的實(shí)驗(yàn)都在8核的處理器上完成。

3.1 自主生成數(shù)據(jù)集實(shí)驗(yàn)

為了驗(yàn)證代價(jià)模型的有效性,本文利用Greenplum數(shù)據(jù)庫(kù)集群進(jìn)行了如下實(shí)驗(yàn)。首先在數(shù)據(jù)庫(kù)中生成5張關(guān)系表A、B、C、D和E,每張表的元組數(shù)分別為5×104、10×104、15×104、20×104和25×104。5張生成表的規(guī)模及屬性如表1所示。此外,本文通過(guò)多次實(shí)驗(yàn)得到了并行最大最小蟻群算法的最優(yōu)參數(shù)選擇,其中:螞蟻數(shù)量設(shè)置為30,局部迭代次數(shù)和全局迭代次數(shù)分別設(shè)置為20和30,并行度設(shè)置為2,代價(jià)模型中的權(quán)值設(shè)置為0.1。

表1 自主生成的表的規(guī)模(/104)及屬性Tab. 1 Size (/104) and attributes of the self-generated tables

初始的連接順序按從左至右為((AB)C)D)E),獲取該連接的執(zhí)行時(shí)間,然后利用并行最大最小蟻群算法找出代價(jià)最小的連接順序,即(((A(ED))C)B),輸出這種方式的執(zhí)行時(shí)間并且與其他連接方式的執(zhí)行時(shí)間進(jìn)行對(duì)比。表2中列出了其中5種連接方式的實(shí)際完成時(shí)間。對(duì)每種連接方式分別進(jìn)行10次實(shí)驗(yàn),取平均值作為該連接順序進(jìn)行連接的時(shí)間。從實(shí)驗(yàn)結(jié)果可以看出,搜索出的最優(yōu)連接順序完成連接所用的時(shí)間最少,這說(shuō)明本文設(shè)計(jì)的代價(jià)模型可以比較準(zhǔn)確地衡量不同連接順序的代價(jià),驗(yàn)證了該代價(jià)模型以及并行最大最小蟻群算法的有效性。

表2 連接操作的執(zhí)行時(shí)間Tab. 2 Execution time of join operation

另一方面,為了驗(yàn)證并行最大最小蟻群算法的尋優(yōu)能力,本文分別利用動(dòng)態(tài)規(guī)劃、最大最小蟻群算法、遺傳算法以及并行最大最小蟻群算法進(jìn)行了多組對(duì)比實(shí)驗(yàn),上述四種算法獲得最優(yōu)解的時(shí)間對(duì)比如圖1所示??梢钥闯?,當(dāng)連接關(guān)系數(shù)為5和10時(shí),四種算法的尋優(yōu)效率相差不大;隨著關(guān)系數(shù)的增加,遺傳算法和并行最大最小蟻群算法的效率相對(duì)其他兩種算法來(lái)說(shuō)更高;當(dāng)連接關(guān)系數(shù)增加到25時(shí),并行最大最小蟻群算法的搜索效率相對(duì)遺傳算法來(lái)說(shuō)更高,且隨著關(guān)系數(shù)的增多,這種優(yōu)勢(shì)更加明顯。這說(shuō)明并行最大最小蟻群算法的尋優(yōu)能力比Greenplum數(shù)據(jù)庫(kù)定義的動(dòng)態(tài)規(guī)劃和遺傳算法的效率更高。

圖1 四種算法連接搜索最優(yōu)連接順序的時(shí)間比較Fig. 1 Comparison of search time for optimal join order of four algorithms

3.2 標(biāo)準(zhǔn)數(shù)據(jù)集實(shí)驗(yàn)

為了驗(yàn)證基于代價(jià)模型的并行最大最小蟻群算法對(duì)Greenplum數(shù)據(jù)庫(kù)性能的優(yōu)化,在Greenplum數(shù)據(jù)庫(kù)集群上模擬了復(fù)雜查詢。本節(jié)實(shí)驗(yàn)的數(shù)據(jù)都是通過(guò)TPC-H工具得到的,其中測(cè)試數(shù)據(jù)量的統(tǒng)計(jì)如表3所示。

TPC-H是一套針對(duì)數(shù)據(jù)庫(kù)決策支持能力的測(cè)試基準(zhǔn),用來(lái)測(cè)試數(shù)據(jù)庫(kù)系統(tǒng)復(fù)雜查詢的響應(yīng)時(shí)間,其中定義了一個(gè)數(shù)據(jù)庫(kù)模型,該模型包括8張數(shù)據(jù)表:CUSTOMER、LINEITEM、NATION、ORDERS、PART、PARTSUPP、REGION和SUPPLIER。針對(duì)這8張數(shù)據(jù)表提供了22條復(fù)雜的查詢語(yǔ)句,本文就通過(guò)執(zhí)行這22條復(fù)雜查詢語(yǔ)句的時(shí)間長(zhǎng)短來(lái)分析查詢效率,并展示前10條查詢語(yǔ)句的查詢時(shí)間。Greenplum、MySQL、PostgreSQL這三種數(shù)據(jù)庫(kù)處理查詢語(yǔ)句的時(shí)間對(duì)比結(jié)果如表4所示。從表4可以看出,MySQL數(shù)據(jù)庫(kù)對(duì)查詢語(yǔ)句的處理時(shí)間最長(zhǎng);而PostgreSQL相對(duì)MySQL的優(yōu)勢(shì)則體現(xiàn)在算法的性能上,其采用的Hash join可以提高系統(tǒng)查詢的效率;但是,將PostgreSQL與Greenplum進(jìn)行比較時(shí),對(duì)于S3、S7和S8這三條查詢語(yǔ)句,PostgreSQL的處理時(shí)間更短。為了更精確地對(duì)PostgreSQL與Greenplum的性能進(jìn)行對(duì)比分析,將8張數(shù)據(jù)表的規(guī)模放大10倍后再次對(duì)這兩個(gè)數(shù)據(jù)庫(kù)進(jìn)行實(shí)驗(yàn)。其中,前10條查詢語(yǔ)句的執(zhí)行結(jié)果如表5所示。從表5可以看出,隨著數(shù)據(jù)量的增大,PostgreSQL的查詢時(shí)間顯著增加,性能下降比較明顯;但是,對(duì)S7這條查詢語(yǔ)句,PostgreSQL的執(zhí)行時(shí)間仍然比Greenplum更短。這是因?yàn)?,?duì)少數(shù)一些查詢語(yǔ)句,Greenplum的重分布會(huì)消耗大量時(shí)間;同時(shí),對(duì)比實(shí)驗(yàn)的數(shù)據(jù)量還不足以模擬聯(lián)機(jī)分析處理(Online Analytical Processing, OLAP)場(chǎng)景,不能充分體現(xiàn)Greenplum對(duì)大數(shù)據(jù)處理的優(yōu)勢(shì)。

表3 各測(cè)試表的數(shù)據(jù)量統(tǒng)計(jì)Tab. 3 Data amount in each test table

表4 三個(gè)數(shù)據(jù)庫(kù)的SQL語(yǔ)句執(zhí)行時(shí)間對(duì)比 sTab. 4 Comparison of execution time for SQL statements of three databases s

表6列出了Greenplum數(shù)據(jù)庫(kù)優(yōu)化前和優(yōu)化后的查詢語(yǔ)句執(zhí)行時(shí)間對(duì)比,優(yōu)化前后采用的表的規(guī)模是表1中規(guī)模的10倍。從表6中可以看出,優(yōu)化后的Greenplum數(shù)據(jù)庫(kù)的平均查詢執(zhí)行時(shí)間較優(yōu)化前有所減少,查詢效率更高,但優(yōu)化后的平均查詢執(zhí)行時(shí)間減少幅度不大,原因在于本文實(shí)驗(yàn)集群中每個(gè)子節(jié)點(diǎn)配置的僅是雙核CPU,雖然采用CPU內(nèi)核調(diào)度可以提升CPU內(nèi)核的利用率,但調(diào)度過(guò)程本身也會(huì)消耗時(shí)間;更主要的是Greenplum數(shù)據(jù)庫(kù)的查詢過(guò)程包括主節(jié)點(diǎn)將并行最大最小蟻群算法生成的最優(yōu)查詢計(jì)劃分發(fā)給各子節(jié)點(diǎn),分發(fā)過(guò)程涉及到廣播或重分布引起的子節(jié)點(diǎn)之間的數(shù)據(jù)傳輸,在數(shù)據(jù)規(guī)模不大的情況下,數(shù)據(jù)傳輸時(shí)間占據(jù)查詢執(zhí)行時(shí)間的比重不可忽略,甚至對(duì)執(zhí)行時(shí)間的影響較大。在內(nèi)核數(shù)量少且查詢語(yǔ)句與數(shù)據(jù)量不大的情況下,優(yōu)化后的Greenplum數(shù)據(jù)庫(kù)查詢性能提升不明顯,但較Greenplum優(yōu)化前的查詢性能還是有所提升。

表5 兩個(gè)數(shù)據(jù)庫(kù)(規(guī)模放大10倍)的SQL語(yǔ)句執(zhí)行時(shí)間對(duì)比Tab. 5 Comparison of execution time for SQL statements of two databases (data table scale ×10)

表6 Greenplum優(yōu)化前后的SQL語(yǔ)句執(zhí)行時(shí)間對(duì)比Tab. 6 Comparison of execution time for SQL statements of Greenplum before and after optimization

4 結(jié)語(yǔ)

為了解決分布式數(shù)據(jù)庫(kù)數(shù)據(jù)規(guī)模增大而導(dǎo)致的查詢效率降低的問(wèn)題,本文對(duì)最優(yōu)查詢計(jì)劃生成問(wèn)題進(jìn)行研究,提出了一種最優(yōu)查詢計(jì)劃生成方法。連接順序執(zhí)行時(shí)間、算法尋優(yōu)能力、查詢語(yǔ)句執(zhí)行時(shí)間的對(duì)比實(shí)驗(yàn)表明,考慮了傳輸代價(jià)的代價(jià)模型能較準(zhǔn)確地估計(jì)不同連接順序的代價(jià),且基于該代價(jià)模型的并行最大最小蟻群算法在四種算法中擁有最好的尋優(yōu)能力。由于實(shí)驗(yàn)采用的查詢語(yǔ)句、表規(guī)模等數(shù)量上的有限性,優(yōu)化后的Greenplum數(shù)據(jù)庫(kù)在查詢性能提升方面不是很明顯。在最優(yōu)查詢計(jì)劃生成之后,為進(jìn)一步提升Greenplum數(shù)據(jù)庫(kù)的查詢性能,對(duì)各節(jié)點(diǎn)之間的任務(wù)調(diào)度進(jìn)行優(yōu)化是下一步的研究方向。

參考文獻(xiàn):

[1]ZENG F S. Research and improvement of database storage method [J]. Applied Mechanics and Materials, 2014, 608-609: 641-645.

[2]CHANG F, DEAN J, GHEMAWAT S, et al. Bigtable: a distributed storage system for structured data [J]. ACM Transactions on Computer Systems, 2008, 26(2): Article No. 4.

[3]GHEMAWAT S, GOBIOFF H, LEUNG S-T. The Google file system [C]// SOSP 2003: Proceedings of the 19th ACM Symposium on Operating Systems Principles. New York: ACM, 2003: 29-43.

[4]DEAN J, GHEMAWAT S. MapReduce: simplified data processing on large clusters [J]. Communications of the ACM — 50th Anniversary Issue: 1958—2008, 2008, 51(1): 107-113.

[5]GOLLAPUDI S. Getting Started with Greenplum for Big Data Analytics [M]. Birmingham: Packt Publishing, 2013: 24.

[6]ANTOVA L, EL-HELW A, SOLIMAN M A, et al. Optimizing queries over partitioned tables in MPP systems [C]// SIGMOD ’14: Proceedings of the 2014 ACM SIGMOD International Conference on Management of Data. New York: ACM, 2014: 373-384.

[7]RODRIGUES E R, NAVAUX P O A, PANETTA J, et al. A comparative analysis of load balancing algorithms applied to a weather forecast model [C]// SBAC-PAD 2010: Proceedings of the 2010 22nd International Symposium on Computer Architecture and High Performance Computing. Washington, DC: IEEE Computer Society, 2010: 71-78.

[8]KOSSMANN D, STOCKER K. Iterative dynamic programming: a new class of query optimization algorithms [J]. ACM Transactions on Database Systems, 2000, 25(1): 43-82.

[9]ILAVARASAN E, THAMBIDURAI P. Genetic algorithm for task scheduling on distributed heterogeneous computing system [J]. International Review on Computers & Software, 2015, 1(3): 233.

[10]KUMAR T V V, SINGH V, VERMA A K. Distributed query processing plans generation using genetic algorithm [J]. International Journal of Computer Theory and Engineering, 2011, 3(1): 1793-8201.

[11]HANAFY H A, GADALLAH A M. Ant colony-based approach for query optimization [C]// DMBD 2016: Proceedings of the 2016 International Conference on Data Mining and Big Data, LNCS 9714. Cham: Springer, 2016: 425-433.

[12]HOOS H H, STüETZLE T. Special issue on stochastic search algorithms — Preface [J]. Annals of Operations Research, 2007, 156: 1-4.

[13]SOLIMAN M A, ANTOVA L, RAGHAVAN V, et al. Orca: a modular query optimizer architecture for big data [C]// SIGMOD 2014: Proceedings of the 2014 ACM SIGMOD International Conference on Management of Data. New York: ACM, 2014: 337-348.

[14]GIRI A K, KUMAR R. Distributed query processing plan generation using iterative improvement and simulated annealing [C]// IACC 2013: Proceedings of the IEEE 3rd International Advance Computing Conference. Piscataway, NJ: IEEE, 2013: 757-762.

[15]MAHMOUD F, SHABAN S, ABD EL-NABY H. A proposed query optimizer based on genetic algorithms [J]. Egyptian Computer Journal, 2010, 37(1): 1-22.

猜你喜歡
代價(jià)語(yǔ)句分布式
基于RTDS的分布式光伏并網(wǎng)建模研究
重點(diǎn):語(yǔ)句銜接
愛的代價(jià)
基于預(yù)處理MUSIC算法的分布式陣列DOA估計(jì)
幸災(zāi)樂(lè)禍的代價(jià)
代價(jià)
基于DDS的分布式三維協(xié)同仿真研究
我喜歡
家庭分布式儲(chǔ)能的發(fā)展前景
作文語(yǔ)句實(shí)錄