本發(fā)明公開一種方法和裝置,涉及數(shù)據(jù)庫,具體地說是一種異構(gòu)數(shù)據(jù)庫跨系統(tǒng)查詢成本估算方法和裝置。
背景技術(shù):
1、隨著計算技術(shù)的多樣化發(fā)展,異構(gòu)計算的出現(xiàn),以及云計算技術(shù)的不斷滲透,數(shù)據(jù)庫領(lǐng)域也在吸納和采用各種技術(shù),其中異構(gòu)數(shù)據(jù)庫可能會涉及數(shù)據(jù)庫軟件調(diào)用異構(gòu)硬件計算能力,或調(diào)用部署在云上的基礎(chǔ)組件的場景。當(dāng)數(shù)據(jù)庫技術(shù)涉及異構(gòu)計算的場景時,查詢成本需要估算?,F(xiàn)有的關(guān)系型數(shù)據(jù)庫的查詢成本估算往往是單一指標(biāo)的,即計算時間或計算量,但是當(dāng)涉及異構(gòu)模塊時,異構(gòu)計算單元,例如異構(gòu)硬件或云資源的計算查詢成本往往是多維的,異構(gòu)系統(tǒng)的查詢成本估算往往與關(guān)系數(shù)據(jù)庫的維度不同,會出現(xiàn)數(shù)據(jù)庫規(guī)劃的查詢成本與實際查詢成本不符,發(fā)生實際計算查詢成本與估計查詢成本不符的情況,影響數(shù)據(jù)庫使用體驗。嚴(yán)重情況下,數(shù)據(jù)庫系統(tǒng)的查詢成本估算可能造成異構(gòu)計算系統(tǒng)某些指標(biāo)超出承受值等情況。
技術(shù)實現(xiàn)思路
1、本發(fā)明針對現(xiàn)有技術(shù)的問題,提供一種異構(gòu)數(shù)據(jù)庫跨系統(tǒng)查詢成本估算方法和裝置,能夠彌合數(shù)據(jù)庫與異構(gòu)資源之間查詢成本估算體系的差異,從而實現(xiàn)數(shù)據(jù)庫調(diào)用異構(gòu)資源的全局高效。
2、本發(fā)明提出的具體方案是:
3、本發(fā)明提供一種異構(gòu)數(shù)據(jù)庫跨系統(tǒng)查詢成本估算方法,包括:
4、步驟1:源數(shù)據(jù)庫對接異構(gòu)庫系統(tǒng)時,選取查詢代價評估指標(biāo):將基于計算量的計算代價作為源數(shù)據(jù)庫的查詢代價評估指標(biāo),分別將數(shù)據(jù)傳入、觸發(fā)計算、結(jié)果傳出過程中的速率作為異構(gòu)系統(tǒng)的查詢代價評估指標(biāo);
5、步驟2:根據(jù)查詢代價評估指標(biāo)建立成本估算模型:基于數(shù)據(jù)庫查詢,根據(jù)異構(gòu)系統(tǒng)執(zhí)行聚合、排序計算的前提,使用查詢代價評估指標(biāo)建立成本估算模型;
6、步驟3:訓(xùn)練成本估算模型:將源數(shù)據(jù)庫的異構(gòu)查詢執(zhí)行計劃發(fā)送到異構(gòu)系統(tǒng)執(zhí)行,獲取查詢代價評估指標(biāo)評估值和計算計時作為反饋值,利用反饋值訓(xùn)練成本估算模型,
7、步驟4:應(yīng)用成本估算模型推算異構(gòu)查詢執(zhí)行計劃的成本。
8、進(jìn)一步,所述的一種異構(gòu)數(shù)據(jù)庫跨系統(tǒng)查詢成本估算方法中步驟1中源數(shù)據(jù)庫對接的異構(gòu)庫系統(tǒng)具有g(shù)pu設(shè)備,并對異構(gòu)庫系統(tǒng)增加判斷內(nèi)存超限的評估指標(biāo)goom,設(shè)置goom為1表示出現(xiàn)內(nèi)存超限的情況,goom為0表示沒有超限。
9、進(jìn)一步,所述的一種異構(gòu)數(shù)據(jù)庫跨系統(tǒng)查詢成本估算方法中步驟2中根據(jù)查詢代價評估指標(biāo)建立成本估算模型為:
10、c<==(push_down_flag*)((gpui*agg_batch_size)+gpuc1+gpuo*agg_result_size)*agg_batch_num*a+(push_down_flag*)((gpui+gpuo)*sort_batch_size)*b+gpuc2)*sort_batch_num+goom*(k1+k2)+(1-push_down_flag)*cpu_agg*agg_batch_size*agg_batch_num*c+(1-push_down_flag)*cpu_sort*sort_batch_size*sort_batch_num*d,
11、成本估算模型中的a,b,c,d,k1,k2均為常量系數(shù),c表示計算代價,gpuc1表示gpu設(shè)備進(jìn)行聚合計算的計算速率,gpuc2表示排序計算的計算速率,cpu_agg和cpu_sort表示使用cpu進(jìn)行計算時的速率,agg_batch_size表示數(shù)據(jù)庫針對異構(gòu)查詢執(zhí)行計劃根據(jù)數(shù)據(jù)情況設(shè)置的相關(guān)參數(shù),agg_result_size表示聚合結(jié)果集的大小,agg_batch_num表示聚合計算每批次數(shù)據(jù)量,sort_batch_size表示排序計算每批次數(shù)據(jù)量,push_down_flag表示某計算是否下推到異構(gòu)系統(tǒng)進(jìn)行,
12、整理成本估算模型,得到:
13、{push_down_flag,agg_batch_size,sort_batch_size,w1,w2,...wn}==>c
14、w1,w2...wn表示不同產(chǎn)生現(xiàn)金成本的算子的權(quán)重。
15、進(jìn)一步,所述的一種異構(gòu)數(shù)據(jù)庫跨系統(tǒng)查詢成本估算方法中步驟3中采用有監(jiān)督學(xué)習(xí)的機制訓(xùn)練成本估算模型,將異構(gòu)計算的優(yōu)化成本p*c0作為懲罰函數(shù),表示使用某0<p<=1倍的c0作為預(yù)期優(yōu)化成本,如果使用異構(gòu)計算的結(jié)果并不優(yōu)于完全使用數(shù)據(jù)庫的計算,說明異構(gòu)計算無效;而當(dāng)異構(gòu)計算獲得比c0更低的成本時,表示成本估算模型有效,
16、以push_down_flag,agg_batch_size,sort_batch_size,w1,w2,...作為模型輸入,以c-p*c0作為輸出進(jìn)行有監(jiān)督訓(xùn)練,
17、訓(xùn)練的初始以p=1開始,如果訓(xùn)練后所有測試集都通過,則降低p值,再進(jìn)行測試,直到遇到某個測試集無法通過測試,如果此時p<1,則此時成本估算模型成熟有效。
18、進(jìn)一步,所述的一種異構(gòu)數(shù)據(jù)庫跨系統(tǒng)查詢成本估算方法中步驟4中獲取異構(gòu)查詢執(zhí)行計劃的實際執(zhí)行成本,將實際執(zhí)行成本反饋給源數(shù)據(jù)庫用于調(diào)整成本估算模型的參數(shù)。
19、本發(fā)明還提供一種異構(gòu)數(shù)據(jù)庫跨系統(tǒng)查詢成本估算裝置,包括指標(biāo)管理模塊、模型管理模塊和估算模塊,
20、指標(biāo)管理模塊管理源數(shù)據(jù)庫對接異構(gòu)庫系統(tǒng)時,選取查詢代價評估指標(biāo):將基于計算量的計算代價作為源數(shù)據(jù)庫的查詢代價評估指標(biāo),分別將數(shù)據(jù)傳入、觸發(fā)計算、結(jié)果傳出過程中的速率作為異構(gòu)系統(tǒng)的查詢代價評估指標(biāo);
21、模型管理模塊根據(jù)查詢代價評估指標(biāo)建立成本估算模型:基于數(shù)據(jù)庫查詢,根據(jù)異構(gòu)系統(tǒng)執(zhí)行聚合、排序計算的前提,使用查詢代價評估指標(biāo)建立成本估算模型;
22、模型管理模塊訓(xùn)練成本估算模型:將源數(shù)據(jù)庫的異構(gòu)查詢執(zhí)行計劃發(fā)送到異構(gòu)系統(tǒng)執(zhí)行,獲取查詢代價評估指標(biāo)評估值和計算計時作為反饋值,利用反饋值訓(xùn)練成本估算模型,
23、估算模塊應(yīng)用成本估算模型推算異構(gòu)查詢執(zhí)行計劃的成本。
24、進(jìn)一步,所述的一種異構(gòu)數(shù)據(jù)庫跨系統(tǒng)查詢成本估算裝置的指標(biāo)管理模塊管理源數(shù)據(jù)庫對接的異構(gòu)庫系統(tǒng)具有g(shù)pu設(shè)備,并對異構(gòu)庫系統(tǒng)增加判斷內(nèi)存超限的評估指標(biāo)goom,設(shè)置goom為1表示出現(xiàn)內(nèi)存超限的情況,goom為0表示沒有超限。
25、進(jìn)一步,所述的一種異構(gòu)數(shù)據(jù)庫跨系統(tǒng)查詢成本估算裝置的模型管理模塊根據(jù)查詢代價評估指標(biāo)建立成本估算模型為:
26、c<==(push_down_flag*)((gpui*agg_batch_size)+gpuc1+gpuo*agg_result_size)*agg_batch_num*a+(push_down_flag*)((gpui+gpuo)*sort_batch_size)*b+gpuc2)*sort_batch_num+goom*(k1+k2)+(1-push_down_flag)*cpu_agg*agg_batch_size*agg_batch_num*c+(1-push_down_flag)*cpu_sort*sort_batch_size*sort_batch_num*d,
27、成本估算模型中的a,b,c,d,k1,k2均為常量系數(shù),c表示計算代價,gpuc1表示gpu設(shè)備進(jìn)行聚合計算的計算速率,gpuc2表示排序計算的計算速率,cpu_agg和cpu_sort表示使用cpu進(jìn)行計算時的速率,agg_batch_size表示數(shù)據(jù)庫針對異構(gòu)查詢執(zhí)行計劃根據(jù)數(shù)據(jù)情況設(shè)置的相關(guān)參數(shù),agg_result_size表示聚合結(jié)果集的大小,agg_batch_num表示聚合計算每批次數(shù)據(jù)量,sort_batch_size表示排序計算每批次數(shù)據(jù)量,push_down_flag表示某計算是否下推到異構(gòu)系統(tǒng)進(jìn)行,
28、整理成本估算模型,得到:
29、{push_down_flag,agg_batch_size,sort_batch_size,w1,w2,...wn}==>c
30、w1,w2...wn表示不同產(chǎn)生現(xiàn)金成本的算子的權(quán)重。
31、進(jìn)一步,所述的一種異構(gòu)數(shù)據(jù)庫跨系統(tǒng)查詢成本估算裝置的模型管理模塊采用有監(jiān)督學(xué)習(xí)的機制訓(xùn)練成本估算模型,將異構(gòu)計算的優(yōu)化成本p*c0作為懲罰函數(shù),表示使用某0<p<=1倍的c0作為預(yù)期優(yōu)化成本,如果使用異構(gòu)計算的結(jié)果并不優(yōu)于完全使用數(shù)據(jù)庫的計算,說明異構(gòu)計算無效;而當(dāng)異構(gòu)計算獲得比c0更低的成本時,表示成本估算模型有效,
32、以push_down_flag,agg_batch_size,sort_batch_size,w1,w2,...作為模型輸入,以c-p*c0作為輸出進(jìn)行有監(jiān)督訓(xùn)練,
33、訓(xùn)練的初始以p=1開始,如果訓(xùn)練后所有測試集都通過,則降低p值,再進(jìn)行測試,直到遇到某個測試集無法通過測試,如果此時p<1,則此時成本估算模型成熟有效。
34、進(jìn)一步,所述的一種異構(gòu)數(shù)據(jù)庫跨系統(tǒng)查詢成本估算裝置的估算模塊獲取異構(gòu)查詢執(zhí)行計劃的實際執(zhí)行成本,將實際執(zhí)行成本反饋給源數(shù)據(jù)庫用于調(diào)整成本估算模型的參數(shù)。
35、本發(fā)明的有益之處是:
36、本發(fā)明提供數(shù)據(jù)庫與異構(gòu)資源之間查詢成本估算進(jìn)行協(xié)同規(guī)劃的方法,能夠彌合數(shù)據(jù)庫與異構(gòu)資源之間查詢成本估算體系的差異,從而實現(xiàn)數(shù)據(jù)庫調(diào)用異構(gòu)資源的全局高效。并能夠促使數(shù)據(jù)庫規(guī)劃的查詢成本與實際查詢成本相符,提高數(shù)據(jù)庫使用體驗。防止數(shù)據(jù)庫系統(tǒng)的查詢成本估算超出異構(gòu)計算系統(tǒng)某些指標(biāo)承受值等情況的發(fā)生。