亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

用于使用集群緩存進(jìn)行數(shù)據(jù)庫查詢的并行優(yōu)化的系統(tǒng)和方法與流程

文檔序號:11530726閱讀:309來源:國知局
用于使用集群緩存進(jìn)行數(shù)據(jù)庫查詢的并行優(yōu)化的系統(tǒng)和方法與流程

本文中所描述的主題總體涉及數(shù)據(jù)庫管理系統(tǒng),更具體地,涉及一種用于提高查詢執(zhí)行的性能的系統(tǒng)和方法,其中聚類提高性能。



背景技術(shù):

數(shù)據(jù)庫系統(tǒng)一般用于應(yīng)答從存儲的數(shù)據(jù)庫請求信息的查詢。查詢可以定義為針對數(shù)據(jù)庫中的數(shù)據(jù)和所表達(dá)的數(shù)據(jù)關(guān)系的邏輯表達(dá)式,并得到對數(shù)據(jù)庫中的子集的識別結(jié)果。在最近的進(jìn)步中,數(shù)據(jù)庫系統(tǒng)使得單個查詢執(zhí)行能夠并行運(yùn)行。

隨著具有平行計算資源的強(qiáng)大硬件(如處理器和處理器核心)的進(jìn)步,計算從單線程轉(zhuǎn)移到使得單一查詢執(zhí)行能夠并行運(yùn)行的多線程。已設(shè)計許多算法,包括并行排序算法,如雙調(diào)排序、并行基數(shù)排序,高級并行算法,如用于圖形處理的werbuch-shiloach算法,等以利用平行的多個核心,從而提高系統(tǒng)性能。

并行計算的進(jìn)步之一是通過使用非對稱存儲器引入的。非對稱存儲器是以以下方式構(gòu)建的計算機(jī)存儲器:計算機(jī)存儲器被分成存儲體,每個存儲體與處理器緊密關(guān)聯(lián),并且訪問存儲器的成本取決于所訪問的存儲體對于處理器而言是本地的還是遠(yuǎn)程的。非對稱存儲器實(shí)現(xiàn)的示例是大多數(shù)芯片制造商采用的numa(非一致性內(nèi)存訪問)架構(gòu)。

然而,隨著系統(tǒng)中cpu數(shù)量的增加,越來越多的工作正被并行執(zhí)行。這導(dǎo)致新的高效的內(nèi)查詢算法的發(fā)明,例如,并行合并排序算法。但大多數(shù)這些算法都有合并階段的瓶頸。

在分析查詢處理中,操作---連結(jié)組聚合、sort、join,但不限于這些---被認(rèn)為是最頻繁使用并且代價最高的操作。示例性的現(xiàn)有技術(shù)專利文獻(xiàn)之一us5850547通過在計算系統(tǒng)中執(zhí)行聚合函數(shù)的并行處理提供了這樣的解決方案,如圖1中所示。然而,在組聚合的情況下,可以通過將工作負(fù)載分布于不同線程之中使得能夠避免合并階段來避免第二合并階段(根據(jù)文獻(xiàn)‘547中提供的解決方案)。但是這要求數(shù)據(jù)的劃分。并且,當(dāng)待劃分的記錄的數(shù)量太大時,數(shù)據(jù)的劃分變得代價高昂。

在一些現(xiàn)有技術(shù)中,執(zhí)行加載時間聚類。但負(fù)載時間聚類將限制劃分使其局限于僅單一列,因此會嚴(yán)重限制從劃分受益的查詢的數(shù)量。

因此,需要這樣一種方法:將采用用戶的工作環(huán)境并使用最新的技術(shù)來提供將減少組聚合成本從而提高整體系統(tǒng)性能的解決方案。

為了實(shí)現(xiàn)上述需要并解決現(xiàn)有技術(shù)中的上述問題,提供了各種解決方案,其中一些包括但不限于:

●現(xiàn)有技術(shù)文獻(xiàn)us7779008中提供的一種解決方案,該解決方案提供了用于對駐留在諸如關(guān)系表之類容器中的數(shù)據(jù)執(zhí)行并行聚合操作的技術(shù)。將初始數(shù)據(jù)劃分成多片(或數(shù)據(jù)可能已經(jīng)劃分好)示出于圖2中。

●另一種解決方案是通過引入b-mpsm分份join算法提供的,其中分配用于在每個節(jié)點(diǎn)上執(zhí)行聚合的一個線程/進(jìn)程,然后在最后匯總每個節(jié)點(diǎn)的結(jié)果,然后投射得出的結(jié)果,如圖3中所示。

然而,現(xiàn)有技術(shù)中的上述解決方案和其它現(xiàn)有解決方案具有如下所述的至少兩個主要問題,包括但不限于:

●對于優(yōu)化分組后聚合,未執(zhí)行快速聚類;以及

●對于已由多篇論文推薦的連結(jié)算法聚類,聚類在每當(dāng)執(zhí)行查詢時即時進(jìn)行。

因此,基于以上問題,可以清楚地理解,現(xiàn)有的/傳統(tǒng)的查詢執(zhí)行過程中的主要挑戰(zhàn)是每次都必須執(zhí)行聚類的情況,這是次優(yōu)的。因此,考慮到其中要么執(zhí)行兩次相同的查詢要么執(zhí)行需要相同劃分的兩個不同的查詢的情況,本領(lǐng)域技術(shù)人員可以理解,兩種查詢都將需要執(zhí)行聚類。



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

提供本發(fā)明內(nèi)容是為了引入與下文具體實(shí)施方式中進(jìn)一步描述的用于使用集群緩存進(jìn)行數(shù)據(jù)庫查詢的并行優(yōu)化的系統(tǒng)和方法有關(guān)的概念。本發(fā)明內(nèi)容并不意在標(biāo)識所要求保護(hù)的主題的本質(zhì)特征,也不意在用于確定或限制所要求保護(hù)的主題的范圍。

技術(shù)問題:有必要提供一種適應(yīng)用戶的工作環(huán)境并提高組聚合/排序/join性能的機(jī)制。另外,還有必要提供一種用于確定可以用于存儲列的聚類信息的系統(tǒng)存儲器的量的機(jī)制。另外,所提供的機(jī)制必須降低并行內(nèi)查詢聚合期間組聚合/排序/join的性能成本。另外,為了避免查詢執(zhí)行時間并增強(qiáng)cpu的整體性能,要求一種使得針對一次操作/查詢完成的聚類可以通過額外操作重復(fù)使用(如group->sort->join)的機(jī)制。

技術(shù)解決方案:為了解決上述問題以及現(xiàn)有技術(shù)中存在的其它問題,公開了用于緩存聚類信息的動態(tài)聚類的新概念。所公開的機(jī)制適應(yīng)用戶的工作環(huán)境并通過緩存聚類信息提高了組聚合/排序/join的性能。另外,所公開的機(jī)制使用動態(tài)聚類(通過避免并行聚合的合并階段)提高了通過聚合分組/排序/join的性能,并且進(jìn)一步通過緩存聚類信息并將其存儲在工作線程的本地存儲器中來優(yōu)化cpu的整體性能。集群信息的緩存基于用戶配置以避免系統(tǒng)存儲器的過度使用。例如,在本發(fā)明中,通過使用聚類避免了合并階段。聚類確保了相同的數(shù)據(jù)不存在于兩個集群中。因此,沒有必要進(jìn)行合并從而避免了用于執(zhí)行的過量時間。每個集群可以作為獨(dú)立實(shí)體進(jìn)行處理。

多個方面提供了一種用于使用集群緩存進(jìn)行數(shù)據(jù)庫查詢的并行優(yōu)化的系統(tǒng)和方法。技術(shù)解決方案如下:

在一個方面中,公開了一種用于從數(shù)據(jù)庫請求數(shù)據(jù)的數(shù)據(jù)庫查詢的并行優(yōu)化的系統(tǒng)。所述系統(tǒng)包括數(shù)據(jù)庫、耦合到存儲器的處理器,并且所述處理器用于:

●基于接收到的所述數(shù)據(jù)庫查詢的性質(zhì)和/或統(tǒng)計確定所述數(shù)據(jù)庫查詢是否需要進(jìn)行聚類;

●如果確定所述查詢需要進(jìn)行聚類,基于接收到的所述數(shù)據(jù)庫查詢對所述數(shù)據(jù)庫中存在的數(shù)據(jù)進(jìn)行聚類,并在查詢處理后向用戶顯示所述查詢的結(jié)果;

●保留聚類后數(shù)據(jù),并由此創(chuàng)建包括集群元數(shù)據(jù)、至少一個數(shù)據(jù)元素以及所述保留的集群數(shù)據(jù)的至少一個集群緩存;以及

●當(dāng)接收到新查詢并且如果所述新查詢與所述數(shù)據(jù)元素和/或所述集群元數(shù)據(jù)相匹配,重用來自所述集群緩存的所述聚類后數(shù)據(jù)用于查詢處理。

在另一方面中,公開了一種用于從數(shù)據(jù)庫請求數(shù)據(jù)的數(shù)據(jù)庫查詢的并行優(yōu)化的方法。所述方法包括:

●基于接收到的所述數(shù)據(jù)庫查詢的性質(zhì)和/或統(tǒng)計確定所述數(shù)據(jù)庫查詢是否需要進(jìn)行聚類;

●如果確定所述查詢需要進(jìn)行聚類,基于接收到的所述數(shù)據(jù)庫查詢對所述數(shù)據(jù)庫中存在的數(shù)據(jù)進(jìn)行聚類,并向用戶顯示所述查詢的結(jié)果;

●保留所述聚類后數(shù)據(jù);

●創(chuàng)建包括集群元數(shù)據(jù)、至少一個數(shù)據(jù)元素以及所述保留的集群數(shù)據(jù)的至少一個集群緩存;以及

●當(dāng)接收到新查詢并且如果所述新查詢與所述數(shù)據(jù)元素和/或所述集群元數(shù)據(jù)相匹配,重用來自所述集群緩存的所述聚類后數(shù)據(jù)用于所述新查詢的處理。

在本發(fā)明的又一方面中,提供了一種系統(tǒng)和方法以通過使用動態(tài)聚類避免并行聚合的合并階段來提高通過聚合分組的性能,并且進(jìn)一步通過緩存聚類信息并將其存儲在工作線程的本地存儲器中來優(yōu)化所述系統(tǒng)。所述集群信息的緩存基于用戶配置以避免系統(tǒng)存儲器的過度使用。

在一種實(shí)施方式中,通過使用上述技術(shù)解決方案,本發(fā)明提供了一種用于確定可以用于存儲列的聚類信息的系統(tǒng)存儲器的量的機(jī)制。

在一種實(shí)施方式中,通過使用上述技術(shù)解決方案,本發(fā)明提供了一種用于通過避免并行內(nèi)查詢聚合的第二合并階段來降低組聚合成本的機(jī)制。

在一種實(shí)施方式中,通過使用上述技術(shù)解決方案,本發(fā)明提供了一種用于緩存所述集群信息以避免每次執(zhí)行查詢時都進(jìn)行聚類操作從而降低執(zhí)行查詢的成本的機(jī)制。

在一種實(shí)施方式中,通過使用上述技術(shù)解決方案,本發(fā)明提供了一種用于移除未使用的聚類信息以便為頻繁使用的列提供空間。

在一種實(shí)施方式中,通過使用上述技術(shù)解決方案,本發(fā)明提供了一種用于將所述聚類信息分布在不同numa節(jié)點(diǎn)中以提高本地存儲器使用率并減少緩存未命中的機(jī)制。

在一種實(shí)施方式中,通過使用上述技術(shù)解決方案,本發(fā)明提供了一種使得針對一次操作完成的聚類可以通過額外操作重復(fù)使用(如group->sort->join)的機(jī)制。

附圖說明

該詳細(xì)描述是參考附圖描述的。在附圖中,參考編號最左邊的數(shù)字表示所述參考編號在該附圖中首次出現(xiàn)。相同編號在所有附圖中用以指代類似的特殊和組件。

圖1示出現(xiàn)有技術(shù)專利文獻(xiàn)us5850547中公開的通過在計算系統(tǒng)中執(zhí)行聚合函數(shù)的并行處理的解決方案。

圖2示出現(xiàn)有技術(shù)文獻(xiàn)us7779008中公開的通過將初始數(shù)據(jù)劃分成多片(或數(shù)據(jù)可能已經(jīng)劃分好)的解決方案。

圖3示出b-mpsm分份join算法,其中分配用于在每個節(jié)點(diǎn)上執(zhí)行聚合的一個線程/進(jìn)程,然后在最后匯總每個節(jié)點(diǎn)的結(jié)果,然后投射得出的結(jié)果。

圖4示出根據(jù)本發(fā)明主題的實(shí)施例的這樣一種機(jī)制:通過使用動態(tài)聚類避免并行聚合的合并階段來提高通過聚合分組的性能,并且進(jìn)一步通過緩存聚類信息并將其存儲在工作線程的本地存儲器中來優(yōu)化系統(tǒng)。

圖5示出根據(jù)本發(fā)明主題的實(shí)施例的用于從數(shù)據(jù)庫請求數(shù)據(jù)的數(shù)據(jù)庫查詢的并行優(yōu)化的系統(tǒng)。

圖6示出根據(jù)本發(fā)明主題的實(shí)施例的用于從數(shù)據(jù)庫請求數(shù)據(jù)的數(shù)據(jù)庫查詢的并行優(yōu)化的方法。

圖7示出根據(jù)本發(fā)明主題的實(shí)施例的作為樣本的一組記錄,其中示出用于聚類的方案。

具體實(shí)施方式

以下結(jié)合本發(fā)明實(shí)施例中的附圖清楚地描述了本發(fā)明實(shí)施例中的技術(shù)解決方案。顯然,所描述的實(shí)施例僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

本發(fā)明可以以多種方式實(shí)施,包括作為過程、裝置、系統(tǒng)、物質(zhì)組合物、計算機(jī)可讀介質(zhì)如計算機(jī)可讀存儲介質(zhì),或其中程序指令通過光或電子通信鏈路發(fā)送的計算機(jī)網(wǎng)絡(luò)。在本說明書中,這些實(shí)現(xiàn)方式或本發(fā)明可以采取的任何其它形式可被稱為技術(shù)。在一般情況下,所公開的過程的步驟的順序可以在本發(fā)明的范圍內(nèi)進(jìn)行調(diào)整。

下面結(jié)合圖解本發(fā)明的原理的附圖提供了本發(fā)明的一個或多個實(shí)施例的詳細(xì)描述。本發(fā)明是結(jié)合此類實(shí)施例進(jìn)行描述的,但本發(fā)明并不限于任何實(shí)施例。本發(fā)明的范圍僅由權(quán)利要求書限定,并且本發(fā)明涵蓋各種可替代物、修改和等效物。為了提供對本發(fā)明的透徹理解,以下描述中闡述了各種具體細(xì)節(jié)。提供這些細(xì)節(jié)是為了示例的目的,并且本發(fā)明可以在沒有這些具體細(xì)節(jié)中的一些或全部的情況下根據(jù)權(quán)利要求進(jìn)行實(shí)踐。出于清晰的目的,與本發(fā)明相關(guān)的技術(shù)領(lǐng)域中已知的技術(shù)材料未進(jìn)行詳細(xì)描述,以免使本發(fā)明不必要地模糊不清。

公開了用于使用集群緩存進(jìn)行數(shù)據(jù)庫查詢的并行優(yōu)化的系統(tǒng)和方法。

現(xiàn)參照圖4,圖4示出根據(jù)本發(fā)明主題的實(shí)施例的這樣一種機(jī)制:通過使用動態(tài)聚類避免并行聚合的合并階段來提高通過聚合分組的性能,并且進(jìn)一步通過緩存聚類信息并將其存儲在工作線程的本地存儲器中來優(yōu)化系統(tǒng)。圖4示出兩個關(guān)鍵點(diǎn),(1)數(shù)據(jù)被聚類成被命名為“集群1”、“集群2”等的多個塊,(2)存在關(guān)聯(lián)到每個集群以處理這些集群的名為工作線程的線程。在一種典型的實(shí)施方式中,需要分組的所有數(shù)據(jù)使用像基數(shù)聚類的任何已知的聚類機(jī)制進(jìn)行聚類。每個集群包含排他性信息,即沒有兩個集群包含相同的信息。這些集群中的每個集群均位于與一個或其它numa節(jié)點(diǎn)相關(guān)聯(lián)的存儲器中。為了處理這些集群中的數(shù)據(jù),一個線程與每個集群相關(guān)聯(lián)。這些線程與關(guān)聯(lián)到相應(yīng)numa節(jié)點(diǎn)的核心相聯(lián)系。

在一種實(shí)施方式中,提供了系統(tǒng)和方法以通過使用動態(tài)聚類避免并行聚合的合并階段來提高通過聚合分組的性能,并且進(jìn)一步通過緩存聚類信息并將其存儲在工作線程的本地存儲器中來優(yōu)化系統(tǒng)。集群信息的緩存基于用戶配置以避免系統(tǒng)存儲器的過度使用。

雖然針對通過使用動態(tài)聚類避免并行聚合的合并階段來提高通過聚合分組的性能進(jìn)行描述的方面可以以任何數(shù)量的不同的計算系統(tǒng)、環(huán)境和/或配置來實(shí)施,但實(shí)施例是在下面的示例性系統(tǒng)、設(shè)備和方法的上下文中進(jìn)行描述的。

現(xiàn)參照圖5,圖5示出根據(jù)本發(fā)明主題的實(shí)施例的用于從數(shù)據(jù)庫(110)請求數(shù)據(jù)的數(shù)據(jù)庫查詢的并行優(yōu)化的系統(tǒng)(100)。

在一種實(shí)施方式中,該系統(tǒng)包括數(shù)據(jù)庫(110)、耦合到存儲器(108)的處理器(104),并且處理器(110)用于:基于接收到的數(shù)據(jù)庫查詢的性質(zhì)和/或統(tǒng)計確定(112)數(shù)據(jù)庫查詢是否需要進(jìn)行聚類;如果確定查詢需要進(jìn)行聚類,基于接收到的數(shù)據(jù)庫查詢對數(shù)據(jù)庫中存在的數(shù)據(jù)進(jìn)行聚類(114),并在查詢處理后向用戶顯示查詢的結(jié)果;保留(116)聚類后數(shù)據(jù),并由此創(chuàng)建包括集群元數(shù)據(jù)、至少一個數(shù)據(jù)元素以及保留的集群數(shù)據(jù)的至少一個集群緩存;以及當(dāng)接收到新查詢并且如果新查詢與數(shù)據(jù)元素和/或集群元數(shù)據(jù)相匹配,重用(118)來自集群緩存的聚類后數(shù)據(jù)用于查詢處理。

在一種實(shí)施方式中,系統(tǒng)(100)與用戶設(shè)備/數(shù)據(jù)庫客戶端系統(tǒng)(102)可通信地耦合。雖然本發(fā)明主題是在認(rèn)為系統(tǒng)(100)被實(shí)施為單獨(dú)的計算單元的條件下進(jìn)行了闡述,但可以理解,系統(tǒng)(100)也可以在服務(wù)器上,在諸如膝上型計算機(jī)、臺式計算機(jī)、筆記本、工作站、大型計算機(jī)、服務(wù)器、網(wǎng)絡(luò)服務(wù)器等各種計算系統(tǒng)中進(jìn)行實(shí)施。應(yīng)理解,系統(tǒng)(100)可以由多個用戶通過一個或多個用戶設(shè)備/客戶端系統(tǒng)102-1、102-2……102-n或駐留在用戶設(shè)備102上的應(yīng)用進(jìn)行訪問,這些用戶設(shè)備/客戶端系統(tǒng)在下文中統(tǒng)稱為用戶(102)。用戶設(shè)備(102)的示例可以包括,但不限于,便攜式計算機(jī)、個人數(shù)字助理、手持式設(shè)備和工作站。用戶設(shè)備(102)通過網(wǎng)絡(luò)(未示出)通信地耦合到系統(tǒng)(100)。

在一種實(shí)施方式中,網(wǎng)絡(luò)可以是無線網(wǎng)絡(luò)、有線網(wǎng)絡(luò)或其組合。網(wǎng)絡(luò)可以實(shí)施為不同類型的網(wǎng)絡(luò),如內(nèi)聯(lián)網(wǎng)、本地局域網(wǎng)(localareanetwork,lan)、廣域網(wǎng)(wideareanetwork,wan)、互聯(lián)網(wǎng)等。網(wǎng)絡(luò)可以是專用網(wǎng)絡(luò)或共享網(wǎng)絡(luò)。共享網(wǎng)絡(luò)代表使用不同協(xié)議的不同類型的網(wǎng)絡(luò)的聯(lián)合以相互通信,協(xié)議例如,超文本傳輸協(xié)議(hypertexttransferprotocol,http)、傳輸控制協(xié)議/網(wǎng)際協(xié)議(transmissioncontrolprotocol/internetprotocol,tcp/ip)、無線應(yīng)用協(xié)議(wirelessapplicationprotocol,wap)等。另外,網(wǎng)絡(luò)可以包括各種網(wǎng)絡(luò)設(shè)備,包括路由器、橋接器、服務(wù)器、計算設(shè)備、存儲設(shè)備等。

在一種實(shí)施方式中,該至少一個處理器(104)可以實(shí)施為一個或多個微處理器、微型計算機(jī)、微控制器、數(shù)字信號處理器、中央處理單元、狀態(tài)機(jī)、邏輯電路系統(tǒng),和/或基于操作指令操縱信號的任何設(shè)備。除其它能力之外,該至少一個處理器(104)用于獲取和執(zhí)行存儲在存儲器(108)中的計算機(jī)可讀指令。

接口(106)可以包括各種軟件和硬件接口,例如,網(wǎng)絡(luò)接口、圖形用戶界面等。接口(204)可以允許客戶端系統(tǒng)/用戶(102)直接地或通過系統(tǒng)(100)與用戶交互。另外,接口(106)可以使得系統(tǒng)(100)能夠與其它計算設(shè)備,如網(wǎng)絡(luò)服務(wù)器和外部數(shù)據(jù)服務(wù)器(未示出),進(jìn)行通信。接口(106)可以方便各種網(wǎng)絡(luò)和協(xié)議類型內(nèi)的多種通信,網(wǎng)絡(luò)包括:有線網(wǎng)絡(luò),例如lan、電纜等,以及無線網(wǎng)絡(luò),例如wlan、蜂窩,或衛(wèi)星。接口(106)可以包括用于將多個設(shè)備彼此連接或連接到另一服務(wù)器的一個或多個端口。

存儲器(108)可以包括本領(lǐng)域中已知的任何計算機(jī)可讀介質(zhì),包括:例如易失性存儲器,如靜態(tài)隨機(jī)存取存儲器(staticrandomaccessmemory,sram)和動態(tài)隨機(jī)存取存儲器(dynamicrandomaccessmemory,dram),和/或非易失性存儲器,如只讀存儲器(readonlymemory,rom)、可擦可編程rom、閃速存儲器、硬盤、光盤和磁帶。存儲器(108)可以包括至少一個查詢編譯器,查詢編譯器用于為接收到的數(shù)據(jù)庫查詢準(zhǔn)備具有多個計劃節(jié)點(diǎn)的樹結(jié)構(gòu)中的執(zhí)行計劃。應(yīng)注意,查詢編譯器是常規(guī)編譯器,并且執(zhí)行計劃生成是利用現(xiàn)有技術(shù)中可用的傳統(tǒng)/約定方法完成的。

在一種實(shí)施方式中,用戶(102)通過向位于數(shù)據(jù)庫服務(wù)器系統(tǒng)(100)處或系統(tǒng)(100)的數(shù)據(jù)庫(110)發(fā)送/發(fā)起查詢來與系統(tǒng)(100)交互。

在一種實(shí)施方式中,系統(tǒng)(100)用于檢查來自數(shù)據(jù)庫客戶端的查詢請求是否是聚類的候選者/要求進(jìn)行聚類。檢查可以基于查詢的性質(zhì)以及統(tǒng)計來執(zhí)行。查詢的性質(zhì)的示例可以包括但不限于查詢的類型,如join或groupaggregate。如果查詢的性質(zhì)適合進(jìn)行聚類(通常是join、groupaggregate、sort),那么可以選擇該查詢。然后對統(tǒng)計進(jìn)行檢查。如果查詢要選擇多條記錄,那么聚類是可選項。統(tǒng)計通常是基于直方圖的統(tǒng)計,是數(shù)據(jù)庫領(lǐng)域中的基本概念。然后數(shù)據(jù)庫對數(shù)據(jù)進(jìn)行聚類,并執(zhí)行查詢中提供的操作。在操作結(jié)束時,結(jié)果數(shù)據(jù)被投射到客戶端。

在一種實(shí)施方式中,在將數(shù)據(jù)投射到客戶端后,聚類后數(shù)據(jù)由系統(tǒng)保留。這種保留被稱為“集群緩存”。集群緩存的細(xì)節(jié)在下文章節(jié)中進(jìn)行闡述。

在一種實(shí)施方式中,當(dāng)?shù)诙?或另外的或新的)查詢從客戶端到達(dá)數(shù)據(jù)庫/數(shù)據(jù)庫服務(wù)器時,數(shù)據(jù)庫確定該查詢是否可以使用聚類或集群緩存。如果查詢可以使用集群緩存,數(shù)據(jù)庫服務(wù)器檢查聚類后信息是否已在集群緩存中可用。如果數(shù)據(jù)已經(jīng)可用,那么數(shù)據(jù)庫服務(wù)器將重用集群緩存中的信息。

在一種實(shí)施方式中,如果聚類后數(shù)據(jù)已在集群緩存中可用,可以重用來自集群緩存的聚類后數(shù)據(jù),并且如果可用,重用聚類后數(shù)據(jù)用于新查詢的處理。

在一種實(shí)施方式中,集群緩存使用增量緩存更新模型進(jìn)行更新。

在一種實(shí)施方式中,接收的數(shù)據(jù)庫查詢的性質(zhì)是數(shù)據(jù)庫查詢的從包括以下各項的組中選擇的特征:(ⅰ)groupby子句的屬性,(ⅱ)where子句的屬性,(ⅱ)join子句的屬性,(ⅳ)having子句的屬性,以及(v)分組聚合函數(shù)的屬性。

在一種實(shí)施方式中,統(tǒng)計是基于直方圖的統(tǒng)計。統(tǒng)計傳統(tǒng)上在所有dbms中進(jìn)行計算。這些統(tǒng)計可以是基于采樣的并存儲為直方圖。統(tǒng)計的經(jīng)典用法是“選擇性估算”。本發(fā)明使用相同統(tǒng)計對數(shù)據(jù)進(jìn)行聚類。用于選擇性估算的該直方圖在以下文獻(xiàn)中進(jìn)行了闡述:“用于范圍謂詞的選擇性估算的改進(jìn)的直方圖”,poosala、viswanath等人,acmsigmod檔案,第25卷,第2篇,acm,1996。在一種實(shí)施方式中,本發(fā)明可以使用本發(fā)明中的僅一種查詢統(tǒng)計,即“選擇性統(tǒng)計”。它們是隨機(jī)抽樣的統(tǒng)計。一種隨機(jī)抽樣是以下文獻(xiàn)中闡述的蓄水池隨機(jī)抽樣:維特、杰弗里s,“利用蓄水池的隨機(jī)抽樣”,acm數(shù)學(xué)軟件會報(toms)11.1(1985):第37至57頁。

在一種實(shí)施方式中,聚類通過從基于基數(shù)的聚類,或基于散列的聚類,或其任意組合中選擇的用于聚類的技術(shù)中的任何一種執(zhí)行。

在一種實(shí)施方式中,基于系統(tǒng)的配置,聚類后數(shù)據(jù)包括存儲在數(shù)據(jù)庫的表中的全局行id或記錄,或存儲在數(shù)據(jù)庫的表中的記錄的子集中的至少一種。

在一種實(shí)施方式中,數(shù)據(jù)元素包括表id、集群列、聚類模型、過濾條件、存儲器親和性,或其任意組合中的至少一種。

在一種實(shí)施方式中,查詢處理由查詢優(yōu)化器執(zhí)行。

在一種實(shí)施方式中,數(shù)據(jù)庫查詢中包括的分組聚合函數(shù)從count、avg、sum、min、max、variance和standard_deviation聚合函數(shù)進(jìn)行選擇。

在一種實(shí)施方式中,數(shù)據(jù)庫查詢利用sql查詢語言編寫,存儲器是非對稱存儲器。

集群緩存

在一種實(shí)施方式中,為了避免并行組聚合操作的合并階段,表記錄被基于某一基數(shù)位劃分成不同的組。

在一種實(shí)施方式中,表的劃分確保聚合可以針對每個組獨(dú)立地計算并且不需要任何合并。

在一種實(shí)施方式中,如果為每次查詢執(zhí)行進(jìn)行分組,分組將影響組聚合的性能。因此緩存被指定用于存儲頻繁使用的列的聚類信息。

在一種實(shí)施方式中,基于用戶輸入,聚類信息可以是全局行id或?qū)嶋H記錄或記錄子集。

在一種實(shí)施方式中,當(dāng)生成組聚合計劃時,基于數(shù)據(jù)分布使用聚類信息將組分配給每個工作線程。

在一種實(shí)施方式中,為了提高并行算法的性能,使用了聚類機(jī)制。該聚類可以基于基數(shù)的或基于散列的。

在一種實(shí)施方式中,基于數(shù)據(jù)庫服務(wù)器配置,聚類信息可以是全局行id或?qū)嶋H記錄或記錄子集。

在一種實(shí)施方式中,本發(fā)明中的技術(shù)進(jìn)步通過緩存聚類后結(jié)果以避免每次特定查詢到達(dá)時都進(jìn)行聚類來實(shí)現(xiàn)。聚類是代價高昂的操作,即使它為并行算法帶來顯著的性能益處。

集群緩存管理

在一種實(shí)施方式中,集群緩存的大小可以通過用戶輸入配置值來管理,并且可以通過sql命令來增大或減小。集群緩存的大小可以以字節(jié)表示并且通??梢詾?0mb。

在一種實(shí)施方式中,如果緩存大小達(dá)到最大并且請求增添用于新列的集群信息的新請求到達(dá),那么可以將最近最少或最不常用的列的聚類信息從緩存移除。

在一種實(shí)施方式中,如果接收到新的聚類信息,增添可以由用戶使用sql命令完成,或者可以由優(yōu)化器基于系統(tǒng)負(fù)載信息在內(nèi)部完成。例如,假設(shè)正在執(zhí)行像“selectmax(f1)t1groupbyf2”的新查詢的情況。該查詢可以通過來自用戶的形式為“selectmax(f1)fromt1groupbyf2/*hint:clustercache*/”的提示來顯式地聚類和緩存。

該查詢也可以由優(yōu)化器隱式地聚類和緩存。

在一種實(shí)施方式中,集群信息被基于numa節(jié)點(diǎn)的數(shù)量以及其它系統(tǒng)配置存儲在單獨(dú)的存儲器位置。

在一種實(shí)施方式中,當(dāng)系統(tǒng)數(shù)據(jù)變化時,可以為新修改的數(shù)據(jù)拍攝快照并對集群信息進(jìn)行增量更新以減少寫操作的開銷。本領(lǐng)域技術(shù)人員可以理解,緩存的關(guān)鍵問題之一是何時更新緩存。針對這一問題的簡單的方法是周期性地,例如1分鐘一次,刪除緩存并通過掃描所有相關(guān)行來重建緩存。如果緩存具有10m數(shù)據(jù),那么這種方法要求寫入10m。本發(fā)明提供了使用針對基于直方圖的緩存的差異更新的方法。在一個示例中,以下專利中提供了一種差異更新的想法:chaudhuri、surajit、rajeevmotwani和viveknarasayya,“用于數(shù)據(jù)庫系統(tǒng)的使用具有交叉驗(yàn)證的自適應(yīng)隨機(jī)抽樣的直方圖構(gòu)建”,美國專利號6,278,989,2001年8月21日。

在一種實(shí)施方式中,集群如集群緩存章節(jié)中所描述的那樣進(jìn)行緩存。當(dāng)對數(shù)據(jù)庫的寫入發(fā)生時,可能緩存數(shù)據(jù)沒有反映當(dāng)前信息。一種顯而易見的選擇是在數(shù)據(jù)變化時重新創(chuàng)建整個緩存。但這是代價高昂的。因此,本發(fā)明使得能夠使用增量緩存更新模型來更新現(xiàn)有緩存。在這種情況下,當(dāng)對數(shù)據(jù)的寫入發(fā)生時,系統(tǒng)確定該數(shù)據(jù)是否已被緩存。這可以通過在前面(集群緩存)章節(jié)中提到的數(shù)據(jù)結(jié)構(gòu)輕易地計算得知。如果數(shù)據(jù)已被緩存,對緩存進(jìn)行合適的修改。例如,如果記錄被刪除,那么相應(yīng)的數(shù)據(jù)也被從緩存刪除。

圖6示出根據(jù)本發(fā)明主題的實(shí)施例的用于從數(shù)據(jù)庫請求數(shù)據(jù)的數(shù)據(jù)庫查詢的并行優(yōu)化的方法。該方法可以在計算機(jī)可執(zhí)行指令的一般上下文中描述。通常,計算機(jī)可執(zhí)行指令可以包括執(zhí)行特定功能或?qū)嵤┨囟ǔ橄髷?shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)、過程、模塊、函數(shù)等。該方法也可以在分布式計算環(huán)境中實(shí)施,在該環(huán)境中,功能由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行。在分布式計算環(huán)境中,計算機(jī)可執(zhí)行指令可以位于本地和遠(yuǎn)程計算機(jī)存儲介質(zhì)中,包括存儲器存儲設(shè)備。

方法被描述的順序并不意在被解釋為限制,并且任何數(shù)量的所描述的方法框可以按任何順序進(jìn)行組合以實(shí)施該方法或可替代方法。此外,在不脫離本文中描述的主題的范圍的情況下,可以將單獨(dú)塊從該方法中刪除。另外,該方法可以在任何合適的硬件、軟件、固件或其組合中實(shí)施。然而,為了便于闡述,在下文描述的實(shí)施例中,可以認(rèn)為該方法是在上文描述的系統(tǒng)(100)中實(shí)施的。

在方框602中,接收到數(shù)據(jù)庫查詢,并且系統(tǒng)確定接收到的查詢是否需要進(jìn)行聚類。

在方框604中,以常規(guī)方式執(zhí)行接收到的數(shù)據(jù)庫查詢,并且將基于執(zhí)行的結(jié)果顯示給用戶。

在方框606中,在執(zhí)行查詢并且將結(jié)果顯示給用戶之后,系統(tǒng)保留聚類后數(shù)據(jù)并由此創(chuàng)建集群緩存。

在方框608中,當(dāng)系統(tǒng)接收到新查詢時,檢查聚類后的預(yù)先存儲的緩存以確定接收到查詢是否可以使用來自這些緩存的聚類后數(shù)據(jù)。如果系統(tǒng)確定數(shù)據(jù)可以被重新用于處理查詢,則它獲取集群緩存以及與緩存相關(guān)聯(lián)的數(shù)據(jù)以供進(jìn)一步處理。

在一種實(shí)施方式中,該方法包括,如果聚類后數(shù)據(jù)已在集群緩存中可用,重用聚類后數(shù)據(jù)用于新查詢的處理。

在一種實(shí)施方式中,該方法包括,使用增量緩存更新模型更新集群緩存。

在一種實(shí)施方式中,接收到的查詢的性質(zhì)是像join或groupaggregate、sort(orderby),或其任意組合之類的一類查詢。

在一種實(shí)施方式中,聚類通過從基于基數(shù)的聚類,或基于散列的聚類,或其任意組合中選擇的用于聚類的技術(shù)中的任何一種執(zhí)行。

在一種實(shí)施方式中,基于系統(tǒng)的配置,聚類后數(shù)據(jù)包括存儲在數(shù)據(jù)庫的表中的全局行id或記錄,或存儲在數(shù)據(jù)庫的表中的記錄的子集中的至少一種。

在一種實(shí)施方式中,數(shù)據(jù)元素包括表id、集群列、聚類模型、過濾條件、存儲器親和性,或其任意組合中的至少一種。

在一種實(shí)施方式中,數(shù)據(jù)庫查詢中包括的分組聚合函數(shù)從count、avg、sum、min、max、variance和standard_deviation聚合函數(shù)進(jìn)行選擇。

工作示例:

示例1:在下面提供的示例中,示出系統(tǒng)/數(shù)據(jù)庫/服務(wù)器如何可以確定查詢是否可以使用聚類:

本領(lǐng)域技術(shù)人員可以了解并理解,存在受益于聚類的一組查詢,其包括但不限于,groupaggregate、join、sort(orderby)。出于理解的目的,稱這些子句為“集群子句”。這些查詢基于下面給出的兩個條件受益于聚類:

1.查詢的集群子句的選擇性是否足夠高以進(jìn)行劃分?例如,對該查詢應(yīng)用過濾器,并且所得的記錄僅為100。這是集群子句的選擇性(100),這一選擇性對于劃分而言過低。

2.查詢的集群子句的基數(shù)是否足夠高以進(jìn)行劃分?例如,對該查詢應(yīng)用過濾器,并且所得的記錄為10類。這是集群子句的基數(shù)(100),這一基數(shù)對于劃分而言過低。

以上兩個條件利用下述示例進(jìn)行闡述:

假設(shè)表具有1m條記錄。圖7中示出具有方案的作為樣本的一組記錄。

考慮以下查詢:

“selectsum(sales_value),sum(sales_piece)fromdimension_tabgroupbypdt_idwherepdt_type=‘car’;”

這里聚類子句是“groupby”(groupedaggregate)子句。表中用于產(chǎn)品類型“car”的條目數(shù)量形成該集群子句的選擇性。類型為“car”的特定產(chǎn)品的種類(由pdt_id表示)形成集群子句的基數(shù)。

例如,如果在1m條記錄中,只有1000輛類型為“car”的產(chǎn)品,那么選擇性是1000。

例如,如果在1m條記錄中,有1000輛類型為“car”的產(chǎn)品,但僅有10種“car”產(chǎn)品,那么基數(shù)是100。

示例2:在下面提供的示例中,描述了如何將集群緩存存儲在數(shù)據(jù)庫/數(shù)據(jù)庫服務(wù)器中以及在查詢到達(dá)時如何搜索/查找集群集的概念。

在一種實(shí)施方式中,集群緩存的結(jié)構(gòu)如下給出:

從集群結(jié)構(gòu)可以理解,結(jié)構(gòu)主要由兩部分組成:元數(shù)據(jù)和集群數(shù)據(jù)本身。集群數(shù)據(jù)是相當(dāng)簡單的。行的一些概念應(yīng)當(dāng)緩存在集群數(shù)據(jù)中。它可能是僅row_id或者可能是整個行本身。兩種選擇都是可行的。在以上所示示例中使用了row_id。然而,元數(shù)據(jù)比較棘手。在下表中利用示例查詢對其進(jìn)行闡述:

“selectsum(sales_value),sum(sales_piece)fromdimension_tabgroupbypdt_idwherepdt_type=‘car’;”

基于集群緩存的元數(shù)據(jù),對于給定查詢,可以確定它是否已經(jīng)緩存。通過三個查詢對此進(jìn)行闡述,并且計算如下執(zhí)行:

假設(shè)到達(dá)的第一查詢是“selectsum(sales_value),sum(sales_piece)fromdimension_tabgroupbypdt_idwherepdt_type=‘car’;”--->q1。為這一查詢建立集群緩存。

現(xiàn)在假設(shè)到達(dá)的第二查詢是“selectsales_value,sales_piecefromdimension_taborderbypdt_idwherepdt_type=‘car’;”--->q2??梢岳斫膺@一查詢適于進(jìn)行聚類。對于這一查詢,集群列和過濾條件與查詢1匹配。因此,這一查詢可以使用集群緩存中的數(shù)據(jù)。

現(xiàn)在假設(shè)到達(dá)的第三查詢是“selectsum(sales_value),sum(sales_piece)fromdimension_tabgroupbypdt_idwherepdt_type=‘bike’;”--->q3。

可以理解該查詢適于進(jìn)行聚類。然而,用于這一查詢的條件不與集群緩存的條件匹配。因此,這一查詢無法使用集群緩存中的數(shù)據(jù)。

上文討論的示例性實(shí)施例可以提供某些優(yōu)勢。雖然不要求實(shí)施本發(fā)明的各方面,但這些優(yōu)勢可以包括:

1.本發(fā)明中公開的機(jī)制提高了傾向于分組在同一組列中的olap查詢的性能。主要益處在存在較少寫入和較多查詢時實(shí)現(xiàn)。

2.該機(jī)制公開了將中間結(jié)果緩存到分組聚合的概念。它緩存集群信息,以避免為每次查詢執(zhí)行進(jìn)行聚類操作,從而降低查詢執(zhí)行的成本。

3.智能pcc的“連續(xù)etl”場景中的機(jī)制使查詢的性能提高超過70%。

4.該機(jī)制使用緩存來存儲組聚合操作中頻繁使用的列的聚類信息/集群數(shù)據(jù),以提高并行組聚合操作的性能。

5.該機(jī)制將聚類信息分布在不同numa節(jié)點(diǎn)中以避免遠(yuǎn)程讀取存儲器,由此提高本地存儲器的利用率并減少緩存未命中。

6.該機(jī)制使用用戶給出的信息來管理集群緩存,以通過系統(tǒng)配置控制系統(tǒng)存儲器的使用。

7.該機(jī)制利用利用率統(tǒng)計來管理緩存以避免集群緩存中存在陳舊數(shù)據(jù)。

8.該機(jī)制允許用戶使用sql命令來增添或移除集群信息以便為用戶提高靈活性。

9.該機(jī)制通過緩存中間結(jié)果來提高組聚合執(zhí)行速度從而使許多查詢受益。

10.該機(jī)制為用戶提供了可配置且可管理的緩存來存儲關(guān)于組聚合中使用的列的聚類信息。

11.該機(jī)制使得能夠從緩存清除未使用的聚類信息以便為新的聚類信息騰出空間(以便為頻繁使用的列提供空間)。

雖然已經(jīng)以特定于結(jié)構(gòu)特征和/或方法的語言對用于使用集群緩存進(jìn)行數(shù)據(jù)庫查詢的并行優(yōu)化的系統(tǒng)和方法進(jìn)行了描述,但應(yīng)理解,所附權(quán)利要求不一定局限于所描述的具體特征或方法。而是,這些具體特征和方法作為用于使用集群緩存進(jìn)行數(shù)據(jù)庫查詢的并行優(yōu)化的系統(tǒng)和方法的實(shí)施的示例進(jìn)行公開。

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