亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

分布式數(shù)據(jù)庫系統(tǒng)中表連接數(shù)據(jù)分布方式的選擇方法及裝置與流程

文檔序號:12470519閱讀:315來源:國知局
分布式數(shù)據(jù)庫系統(tǒng)中表連接數(shù)據(jù)分布方式的選擇方法及裝置與流程

本發(fā)明屬于分布式數(shù)據(jù)庫系統(tǒng)技術(shù)領(lǐng)域,尤其是涉及一種分布式數(shù)據(jù)庫系統(tǒng)中表連接數(shù)據(jù)分布方式的選擇方法及裝置。



背景技術(shù):

分布式數(shù)據(jù)庫系統(tǒng)通常使用較小的計算機(jī)系統(tǒng),每臺計算機(jī)可單獨(dú)放在一個地方,每臺計算機(jī)中都可能有DBMS的一份完整拷貝副本,或者部分拷貝副本,并具有自己局部的數(shù)據(jù)庫,位于不同地點(diǎn)的許多計算機(jī)通過網(wǎng)絡(luò)互相連接,共同組成一個完整的、全局的邏輯上集中、物理上分布的大型數(shù)據(jù)庫。

在分布式數(shù)據(jù)庫系統(tǒng)中,表連接是常用的運(yùn)算,分布式數(shù)據(jù)庫一般都是采用多臺機(jī)器存儲數(shù)據(jù),即將用戶數(shù)據(jù)根據(jù)hash或者隨機(jī)分布算法把數(shù)據(jù)分布到數(shù)據(jù)庫的各個工作機(jī)器中,這樣來減少單臺數(shù)據(jù)庫工作機(jī)器所存儲的數(shù)據(jù)量,減少每一臺機(jī)器的存儲與計算壓力。在分布式數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)按照關(guān)系表進(jìn)行組織,因此選擇表中合適的分布列進(jìn)行數(shù)據(jù)的分布將非常重要,這對后續(xù)SQL的執(zhí)行優(yōu)化都會起到重要的作用,一般選擇表連接字段作為數(shù)據(jù)的分布列,在分布式數(shù)據(jù)庫系統(tǒng)中表連接的運(yùn)算如果能夠做到運(yùn)算的本地local性,則運(yùn)算會在各個節(jié)點(diǎn)并行執(zhí)行,性能將較好,例如SQL中的表連接字段是hash分布列,則表連接就能做到運(yùn)算的本地local性,則運(yùn)算會在各個節(jié)點(diǎn)并行執(zhí)行,如果表連接字段是非hash分布列,則運(yùn)算就不具有本地local性,該SQL就不可以直接在各個節(jié)點(diǎn)并行執(zhí)行。目前有兩種方式:來做到數(shù)據(jù)的本地local性,方式1:按照表連接字段進(jìn)行數(shù)據(jù)的hash重分布,hash重分布后,重分布后的數(shù)據(jù)就具有了本地local性,這樣基于新的重分布后的數(shù)據(jù)進(jìn)行的表連接和數(shù)據(jù)分組聚合就能做到運(yùn)算的本地local性,則運(yùn)算會在各個節(jié)點(diǎn)并行執(zhí)行了。方式2:是選擇表連接中的其中一個表在分布式系統(tǒng)的所有節(jié)點(diǎn)中拉成全量數(shù)據(jù)的復(fù)制表,然后表連接兩端的表的數(shù)據(jù)也就具有了本地local性,后一步的運(yùn)算就會在各個節(jié)點(diǎn)并行執(zhí)行了,上述兩種方式在不同的運(yùn)用場景中具有不同的優(yōu)勢,如何選取更為合適的方式是當(dāng)前急需解決的問題。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明實(shí)施例提供了一種分布式數(shù)據(jù)庫系統(tǒng)中表連接數(shù)據(jù)分布方式的選擇方法及裝置,以解決如何選取合適的表連接數(shù)據(jù)分布方式的技術(shù)問題。

一方面,本發(fā)明實(shí)施例提供了分布式數(shù)據(jù)庫系統(tǒng)中表連接數(shù)據(jù)分布方式的選擇方法,包括:

判斷表連接字段是否為hash分布列,如果為hash分布列,則直接下發(fā)至計算接單執(zhí)行數(shù)據(jù)連接;

如果不為hash分布列,則根據(jù)評估結(jié)果選擇數(shù)據(jù)分布方式。

進(jìn)一步的,所述評估結(jié)果包括:

表連接字段進(jìn)行數(shù)據(jù)的hash重分布的時間或者表連接中的其中一個表在分布式系統(tǒng)的所有節(jié)點(diǎn)中拉成全量數(shù)據(jù)的復(fù)制表的時間。

進(jìn)一步的,所述方法包括:

評估表連接的兩表中按照單表條件過濾后表的行數(shù)和需要動態(tài)進(jìn)行重分布的字段的總的字節(jié)數(shù);和

評估表連接的中的其中一個表在分布式系統(tǒng)的所有節(jié)點(diǎn)中拉成全量數(shù)據(jù)的復(fù)制表的數(shù)據(jù)量。

進(jìn)一步的,所述方法還包括:

評估表連接的兩表中按照連接字段進(jìn)行動態(tài)重分布后兩表本地join的數(shù)據(jù)量;

或者評估表連接的選擇兩表中的選擇較小的表按照拉復(fù)制表后執(zhí)行兩表本地join的數(shù)據(jù)量。

更進(jìn)一步的,所述根據(jù)評估結(jié)果選擇數(shù)據(jù)分布方式,包括:

按照重分布數(shù)據(jù)量和join數(shù)據(jù)量選取連接時間最短的數(shù)據(jù)分布方式。

另一方面,本發(fā)明實(shí)施例還提供了一種分布式數(shù)據(jù)庫系統(tǒng)中表連接數(shù)據(jù)分布方式的選擇裝置,包括:

判斷單元,用于判斷表連接字段是否為hash分布列,如果為hash分布列,則直接下發(fā)至計算接單執(zhí)行數(shù)據(jù)連接;

選擇單元,用于如果不為hash分布列,則根據(jù)評估結(jié)果選擇數(shù)據(jù)分布方式。

進(jìn)一步的,所述評估結(jié)果包括:

表連接字段進(jìn)行數(shù)據(jù)的hash重分布的時間或者表連接中的其中一個表在分布式系統(tǒng)的所有節(jié)點(diǎn)中拉成全量數(shù)據(jù)的復(fù)制表的時間。

進(jìn)一步的,所述裝置包括:

第一評估單元,用于評估表連接的兩表中按照單表條件過濾后表的行數(shù)和需要動態(tài)進(jìn)行重分布的字段的總的字節(jié)數(shù);和

第二評估單元,用于評估表連接的中的其中一個表在分布式系統(tǒng)的所有節(jié)點(diǎn)中拉成全量數(shù)據(jù)的復(fù)制表的數(shù)據(jù)量。

進(jìn)一步的,所述裝置還包括:

第三評估單元,用于評估表連接的兩表中按照連接字段進(jìn)行動態(tài)重分布后兩表本地join的數(shù)據(jù)量;和

第四評估單元,用于評估表連接的選擇兩表中的選擇較小的表按照拉復(fù)制表后執(zhí)行兩表本地join的數(shù)據(jù)量。

更進(jìn)一步的,所述選擇單元,用于:

按照重分布數(shù)據(jù)量和join數(shù)據(jù)量選取連接時間最短的數(shù)據(jù)分布方式。

本發(fā)明實(shí)施例提供的分布式數(shù)據(jù)庫系統(tǒng)中表連接數(shù)據(jù)分布方式的選擇方法及裝置,通過對兩種方式的運(yùn)算量和響應(yīng)時間的估算,從中選取最為合適的分布方式,用于提高表連接的性能。

附圖說明

為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1是本發(fā)明實(shí)施例一提供的分布式數(shù)據(jù)庫系統(tǒng)中表連接數(shù)據(jù)分布方式的選擇方法的流程示意圖;

圖2是本發(fā)明實(shí)施例二提供的分布式數(shù)據(jù)庫系統(tǒng)中表連接數(shù)據(jù)分布方式的選擇方法的流程示意圖;

圖3是本發(fā)明實(shí)施例三提供的分布式數(shù)據(jù)庫系統(tǒng)中表連接數(shù)據(jù)分布方式的選擇裝置的結(jié)構(gòu)示意圖。

具體實(shí)施方式

下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

實(shí)施例一

圖1為本發(fā)明實(shí)施例一提供的分布式數(shù)據(jù)庫系統(tǒng)中表連接數(shù)據(jù)分布方式的選擇方法的流程圖,本實(shí)施例可適用于在分布式數(shù)據(jù)庫中選擇表連接數(shù)據(jù)分布方式的情況,該方法可以由布式數(shù)據(jù)庫系統(tǒng)中表連接數(shù)據(jù)分布方式的選擇裝置來執(zhí)行,該裝置可由軟件/硬件方式實(shí)現(xiàn),并可集成于分布式數(shù)據(jù)庫系統(tǒng)的管理節(jié)點(diǎn)中。

參見圖1,所述分布式數(shù)據(jù)庫系統(tǒng)中表連接數(shù)據(jù)分布方式的選擇方法,包括:

S110,判斷表連接字段是否為hash分布列,如果為hash分布列,則直接下發(fā)至計算接單執(zhí)行數(shù)據(jù)連接。

分布式數(shù)據(jù)庫系統(tǒng)首先根據(jù)業(yè)務(wù)系統(tǒng)中所有表連接的字段中使用最多的表連接字段選擇作為數(shù)據(jù)的hash分布列,一種場景是SQL中的表連接字段是hash分布列,則該表連接能夠做到運(yùn)算的本地local性,運(yùn)算會在各個節(jié)點(diǎn)并行執(zhí)行。

S120,如果不為hash分布列,則根據(jù)評估結(jié)果選擇數(shù)據(jù)分布方式。

如果表連接字段是非hash分布列,則運(yùn)算就不具有本地local性,該SQL就不可以直接在各個節(jié)點(diǎn)并行執(zhí)行,一種方式為按照表連接字段進(jìn)行數(shù)據(jù)的hash重分布,hash重分布后,重分布后的數(shù)據(jù)就具有了本地local性,這樣基于新的重分布后的數(shù)據(jù)進(jìn)行的表連接就能做到運(yùn)算的本地local性,則運(yùn)算會在各個節(jié)點(diǎn)并行執(zhí)行了,另一種方式為選擇表連接中的其中一個表在分布式系統(tǒng)的所有節(jié)點(diǎn)中拉成全量數(shù)據(jù)的復(fù)制表,然后表連接兩端的表的數(shù)據(jù)也就具有了本地local性,后一步的運(yùn)算就會在各個節(jié)點(diǎn)并行執(zhí)行了。對上述兩種方式進(jìn)行評估,所述述評估結(jié)果包括:表連接字段進(jìn)行數(shù)據(jù)的hash重分布的時間或者表連接中的其中一個表在分布式系統(tǒng)的所有節(jié)點(diǎn)中拉成全量數(shù)據(jù)的復(fù)制表的時間。根據(jù)評估結(jié)果選擇最優(yōu)的表連接數(shù)據(jù)分布方式。

本實(shí)施例提供的分布式數(shù)據(jù)庫系統(tǒng)中表連接數(shù)據(jù)分布方式的選擇方法及裝置,通過對兩種方式的運(yùn)算量和響應(yīng)時間的估算,從中選取最為合適的分布方式,用于提高表連接的性能。

實(shí)施例二

圖2是本發(fā)明實(shí)施例二提供的分布式數(shù)據(jù)庫系統(tǒng)中表連接數(shù)據(jù)分布方式的選擇方法的流程示意圖,本發(fā)明實(shí)施例以上述實(shí)施例為基礎(chǔ),進(jìn)一步的,所述方法增加如下步驟:評估表連接的兩表中按照單表條件過濾后表的行數(shù)和需要動態(tài)進(jìn)行重分布的字段的總的字節(jié)數(shù);和評估表連接的中的其中一個表在分布式系統(tǒng)的所有節(jié)點(diǎn)中拉成全量數(shù)據(jù)的復(fù)制表的數(shù)據(jù)量;及評估表連接的兩表中按照連接字段進(jìn)行動態(tài)重分布后兩表本地join的數(shù)據(jù)量;或者評估表連接的選擇兩表中的選擇較小的表按照拉復(fù)制表后執(zhí)行兩表本地join的數(shù)據(jù)量。并將根據(jù)評估結(jié)果選擇數(shù)據(jù)分布方式,具體優(yōu)化為:按照重分布數(shù)據(jù)量和join數(shù)據(jù)量選取連接時間最短的數(shù)據(jù)分布方式。

參見圖2,所述分布式數(shù)據(jù)庫系統(tǒng)中表連接數(shù)據(jù)分布方式的選擇方法,包括:

S210,判斷表連接字段是否為hash分布列,如果為hash分布列,則直接下發(fā)至計算接單執(zhí)行數(shù)據(jù)連接。

S220,如果不為hash分布列,評估表連接的兩表中按照單表條件過濾后表的行數(shù)和需要動態(tài)進(jìn)行重分布的字段的總的字節(jié)數(shù),和評估表連接的中的其中一個表在分布式系統(tǒng)的所有節(jié)點(diǎn)中拉成全量數(shù)據(jù)的復(fù)制表的數(shù)據(jù)量。

表連接字段是非hash分布列,當(dāng)按照非人工配置方式而智能選擇時首先評估按照表連接字段進(jìn)行數(shù)據(jù)的hash重分布的時間或者表連接中的其中一個表在分布式系統(tǒng)的所有節(jié)點(diǎn)中拉成全量數(shù)據(jù)的復(fù)制表的時間,評估方式如下:方案1,評估表連接的兩表中按照單表條件過濾后表的行數(shù)和需要動態(tài)進(jìn)行重分布的字段的總的字節(jié)數(shù),則重分布數(shù)據(jù)量的計算公式為:行數(shù)*字節(jié)數(shù)。如果表連接的兩個連接字段都是非hash分布列,則兩表都需要分別計算重分布數(shù)據(jù)量,表連接總的重分布的數(shù)據(jù)量是兩者之和。如果表連接的其中一個表的連接字段是非hash分布列,則只需評估該表的需要重分布的數(shù)據(jù)量。方案2,評估表連接的中的其中一個表在分布式系統(tǒng)的所有節(jié)點(diǎn)中拉成全量數(shù)據(jù)的復(fù)制表的數(shù)據(jù)量,首先根據(jù)兩表的單表條件過濾后表的行數(shù)和字段的總的字節(jié)數(shù)來計算需要拉表的數(shù)據(jù)量,計算公式為:行數(shù)*字節(jié)數(shù)。選擇兩表中拉表數(shù)據(jù)量較小的值作為該方案的評估結(jié)果。以上方案中重分布數(shù)據(jù)量或者拉表數(shù)據(jù)量越多,則認(rèn)為執(zhí)行時間越長,兩者具有線性關(guān)系。

S230,評估表連接的兩表中按照連接字段進(jìn)行動態(tài)重分布后兩表本地join的數(shù)據(jù)量,和評估表連接的選擇兩表中的選擇較小的表按照拉復(fù)制表后執(zhí)行兩表本地join的數(shù)據(jù)量。

表連接字段是非hash分布列,當(dāng)按照非人工配置方式而智能選擇時按照表連接字段進(jìn)行數(shù)據(jù)的hash重分布或者表連接中的其中一個表在分布式系統(tǒng)的所有節(jié)點(diǎn)中拉成全量數(shù)據(jù)的方案后節(jié)點(diǎn)上執(zhí)行本地local數(shù)據(jù)連接的時間,評估方式如下:方案1.評估表連接的兩表中按照連接字段進(jìn)行動態(tài)重分布后兩表本地join的數(shù)據(jù)量,則join的數(shù)據(jù)量的計算公式為:分布表1行數(shù)*分布表2行數(shù)*(join字段字節(jié)數(shù)+需要物化的projection字段的字節(jié)數(shù))。方案2.評估表連接的選擇兩表中的選擇較小的表按照拉復(fù)制表后執(zhí)行兩表本地join的數(shù)據(jù)量,則join的數(shù)據(jù)量的計算公式為:分布表1行數(shù)*復(fù)制表2行數(shù)*(join字段字節(jié)數(shù)+需要物化的projection字段的字節(jié)數(shù))。以上方案中join的數(shù)據(jù)量越大,則認(rèn)為節(jié)點(diǎn)上執(zhí)行本地local數(shù)據(jù)join的時間越長,兩者具有線性關(guān)系。

S240,按照重分布數(shù)據(jù)量和join數(shù)據(jù)量選取連接時間最短的數(shù)據(jù)分布方式。

示例性的,計算按照hash方式進(jìn)行數(shù)據(jù)重分布的表連接的時間=(表連接的兩表中按照單表條件過濾后表的行數(shù)和需要動態(tài)進(jìn)行重分布的字段的總的重分布數(shù)據(jù)量+表連接的兩表中按照連接字段進(jìn)行動態(tài)重分布后兩表本地join的數(shù)據(jù)量)*時間系數(shù),按照小表拉復(fù)制表的方式進(jìn)行數(shù)據(jù)分布的表連接的時間=(表連接的中的其中一個表在分布式系統(tǒng)的所有節(jié)點(diǎn)中拉成全量數(shù)據(jù)的復(fù)制表的重分布數(shù)據(jù)量+表連接的選擇兩表中的選擇較小的表按照拉復(fù)制表后執(zhí)行兩表本地join的數(shù)據(jù)量)*時間系數(shù),選擇以上兩種方式中表連接時間最短的為最優(yōu)的方式。

由上述可以看出,當(dāng)大表連接大表時,按照hash方式進(jìn)行數(shù)據(jù)重分布的表連接方式一般最優(yōu),因?yàn)榘凑赵摲N方式評估一般是join時間大于重分布的時間,因此把兩個大表進(jìn)行重分布后就減少了重分布數(shù)據(jù)后節(jié)點(diǎn)上兩個分布表的行數(shù),因此就減少了join時間,如果該種方式按照兩個大表中選擇相對較小的表拉復(fù)制表的方式執(zhí)行,則不是最優(yōu),因?yàn)檫x擇把一個表拉成復(fù)制表后,節(jié)點(diǎn)上兩表的join就變成了一個分布表和一個大的復(fù)制表的join,join時間將增大,該種方案不優(yōu)。當(dāng)大表連接小表時按照小表拉成復(fù)制表進(jìn)行表連接的方式一般最優(yōu),因?yàn)榘凑赵摲N方式評估一般是對大表進(jìn)行hash數(shù)據(jù)重分布時間大于把小表拉成復(fù)制表的時間,因?yàn)榘研”砝蓮?fù)制的時間一般小于把大表進(jìn)行hash重分布的時間,因此在該場景下選擇把小表拉成復(fù)制表的方案較優(yōu)。

本實(shí)施例通過增加增加如下步驟:評估表連接的兩表中按照單表條件過濾后表的行數(shù)和需要動態(tài)進(jìn)行重分布的字段的總的字節(jié)數(shù);和評估表連接的中的其中一個表在分布式系統(tǒng)的所有節(jié)點(diǎn)中拉成全量數(shù)據(jù)的復(fù)制表的數(shù)據(jù)量;及評估表連接的兩表中按照連接字段進(jìn)行動態(tài)重分布后兩表本地join的數(shù)據(jù)量;或者評估表連接的選擇兩表中的選擇較小的表按照拉復(fù)制表后執(zhí)行兩表本地join的數(shù)據(jù)量。并將根據(jù)評估結(jié)果選擇數(shù)據(jù)分布方式,具體優(yōu)化為:按照重分布數(shù)據(jù)量和join數(shù)據(jù)量選取連接時間最短的數(shù)據(jù)分布方式??筛鶕?jù)重分布的數(shù)據(jù)量和join的數(shù)據(jù)量選取連接時間最短的數(shù)據(jù)分布方式,可提高表連接的性能。

實(shí)施例三

圖3是本發(fā)明實(shí)施例三提供的分布式數(shù)據(jù)庫系統(tǒng)中表連接數(shù)據(jù)分布方式的選擇裝置的結(jié)構(gòu)示意圖,如圖3所示,所述裝置包括:

判斷單元310,用于判斷表連接字段是否為hash分布列,如果為hash分布列,則直接下發(fā)至計算接單執(zhí)行數(shù)據(jù)連接;

選擇單元320,用于如果不為hash分布列,則根據(jù)評估結(jié)果選擇數(shù)據(jù)分布方式。

進(jìn)一步的,所述評估結(jié)果包括:

表連接字段進(jìn)行數(shù)據(jù)的hash重分布的時間或者表連接中的其中一個表在分布式系統(tǒng)的所有節(jié)點(diǎn)中拉成全量數(shù)據(jù)的復(fù)制表的時間。

進(jìn)一步的,所述裝置包括:

第一評估單元,用于評估表連接的兩表中按照單表條件過濾后表的行數(shù)和需要動態(tài)進(jìn)行重分布的字段的總的字節(jié)數(shù);和

第二評估單元,用于評估表連接的中的其中一個表在分布式系統(tǒng)的所有節(jié)點(diǎn)中拉成全量數(shù)據(jù)的復(fù)制表的數(shù)據(jù)量。

進(jìn)一步的,所述裝置還包括:

第三評估單元,用于評估表連接的兩表中按照連接字段進(jìn)行動態(tài)重分布后兩表本地join的數(shù)據(jù)量;和

第四評估單元,用于評估表連接的選擇兩表中的選擇較小的表按照拉復(fù)制表后執(zhí)行兩表本地join的數(shù)據(jù)量。

更進(jìn)一步的,所述選擇單元,用于:

按照重分布數(shù)據(jù)量和join數(shù)據(jù)量選取連接時間最短的數(shù)據(jù)分布方式。

本發(fā)明實(shí)施例提供的分布式數(shù)據(jù)庫系統(tǒng)中表連接數(shù)據(jù)分布方式的選擇方法及裝置,通過對兩種方式的運(yùn)算量和響應(yīng)時間的估算,從中選取最為合適的分布方式,用于提高表連接的性能。

本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計算機(jī)可讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲介質(zhì)包括:ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。

最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1