用於使用集群緩存進行資料庫查詢的並行優化的系統和方法與流程
2023-05-19 00:03:11

本文中所描述的主題總體涉及資料庫管理系統,更具體地,涉及一種用於提高查詢執行的性能的系統和方法,其中聚類提高性能。
背景技術:
資料庫系統一般用於應答從存儲的資料庫請求信息的查詢。查詢可以定義為針對資料庫中的數據和所表達的數據關係的邏輯表達式,並得到對資料庫中的子集的識別結果。在最近的進步中,資料庫系統使得單個查詢執行能夠並行運行。
隨著具有平行計算資源的強大硬體(如處理器和處理器核心)的進步,計算從單線程轉移到使得單一查詢執行能夠並行運行的多線程。已設計許多算法,包括並行排序算法,如雙調排序、並行基數排序,高級並行算法,如用於圖形處理的werbuch-shiloach算法,等以利用平行的多個核心,從而提高系統性能。
並行計算的進步之一是通過使用非對稱存儲器引入的。非對稱存儲器是以以下方式構建的計算機存儲器:計算機存儲器被分成存儲體,每個存儲體與處理器緊密關聯,並且訪問存儲器的成本取決於所訪問的存儲體對於處理器而言是本地的還是遠程的。非對稱存儲器實現的示例是大多數晶片製造商採用的numa(非一致性內存訪問)架構。
然而,隨著系統中cpu數量的增加,越來越多的工作正被並行執行。這導致新的高效的內查詢算法的發明,例如,並行合併排序算法。但大多數這些算法都有合併階段的瓶頸。
在分析查詢處理中,操作---連結組聚合、sort、join,但不限於這些---被認為是最頻繁使用並且代價最高的操作。示例性的現有技術專利文獻之一us5850547通過在計算系統中執行聚合函數的並行處理提供了這樣的解決方案,如圖1中所示。然而,在組聚合的情況下,可以通過將工作負載分布於不同線程之中使得能夠避免合併階段來避免第二合併階段(根據文獻『547中提供的解決方案)。但是這要求數據的劃分。並且,當待劃分的記錄的數量太大時,數據的劃分變得代價高昂。
在一些現有技術中,執行加載時間聚類。但負載時間聚類將限制劃分使其局限於僅單一列,因此會嚴重限制從劃分受益的查詢的數量。
因此,需要這樣一種方法:將採用用戶的工作環境並使用最新的技術來提供將減少組聚合成本從而提高整體系統性能的解決方案。
為了實現上述需要並解決現有技術中的上述問題,提供了各種解決方案,其中一些包括但不限於:
●現有技術文獻us7779008中提供的一種解決方案,該解決方案提供了用於對駐留在諸如關係表之類容器中的數據執行並行聚合操作的技術。將初始數據劃分成多片(或數據可能已經劃分好)示出於圖2中。
●另一種解決方案是通過引入b-mpsm分份join算法提供的,其中分配用於在每個節點上執行聚合的一個線程/進程,然後在最後匯總每個節點的結果,然後投射得出的結果,如圖3中所示。
然而,現有技術中的上述解決方案和其它現有解決方案具有如下所述的至少兩個主要問題,包括但不限於:
●對於優化分組後聚合,未執行快速聚類;以及
●對於已由多篇論文推薦的連結算法聚類,聚類在每當執行查詢時即時進行。
因此,基於以上問題,可以清楚地理解,現有的/傳統的查詢執行過程中的主要挑戰是每次都必須執行聚類的情況,這是次優的。因此,考慮到其中要麼執行兩次相同的查詢要麼執行需要相同劃分的兩個不同的查詢的情況,本領域技術人員可以理解,兩種查詢都將需要執行聚類。
技術實現要素:
提供本發明內容是為了引入與下文具體實施方式中進一步描述的用於使用集群緩存進行資料庫查詢的並行優化的系統和方法有關的概念。本發明內容並不意在標識所要求保護的主題的本質特徵,也不意在用於確定或限制所要求保護的主題的範圍。
技術問題:有必要提供一種適應用戶的工作環境並提高組聚合/排序/join性能的機制。另外,還有必要提供一種用於確定可以用於存儲列的聚類信息的系統存儲器的量的機制。另外,所提供的機制必須降低並行內查詢聚合期間組聚合/排序/join的性能成本。另外,為了避免查詢執行時間並增強cpu的整體性能,要求一種使得針對一次操作/查詢完成的聚類可以通過額外操作重複使用(如group->sort->join)的機制。
技術解決方案:為了解決上述問題以及現有技術中存在的其它問題,公開了用於緩存聚類信息的動態聚類的新概念。所公開的機制適應用戶的工作環境並通過緩存聚類信息提高了組聚合/排序/join的性能。另外,所公開的機制使用動態聚類(通過避免並行聚合的合併階段)提高了通過聚合分組/排序/join的性能,並且進一步通過緩存聚類信息並將其存儲在工作線程的本地存儲器中來優化cpu的整體性能。集群信息的緩存基於用戶配置以避免系統存儲器的過度使用。例如,在本發明中,通過使用聚類避免了合併階段。聚類確保了相同的數據不存在於兩個集群中。因此,沒有必要進行合併從而避免了用於執行的過量時間。每個集群可以作為獨立實體進行處理。
多個方面提供了一種用於使用集群緩存進行資料庫查詢的並行優化的系統和方法。技術解決方案如下:
在一個方面中,公開了一種用於從資料庫請求數據的資料庫查詢的並行優化的系統。所述系統包括資料庫、耦合到存儲器的處理器,並且所述處理器用於:
●基於接收到的所述資料庫查詢的性質和/或統計確定所述資料庫查詢是否需要進行聚類;
●如果確定所述查詢需要進行聚類,基於接收到的所述資料庫查詢對所述資料庫中存在的數據進行聚類,並在查詢處理後向用戶顯示所述查詢的結果;
●保留聚類後數據,並由此創建包括集群元數據、至少一個數據元素以及所述保留的集群數據的至少一個集群緩存;以及
●當接收到新查詢並且如果所述新查詢與所述數據元素和/或所述集群元數據相匹配,重用來自所述集群緩存的所述聚類後數據用於查詢處理。
在另一方面中,公開了一種用於從資料庫請求數據的資料庫查詢的並行優化的方法。所述方法包括:
●基於接收到的所述資料庫查詢的性質和/或統計確定所述資料庫查詢是否需要進行聚類;
●如果確定所述查詢需要進行聚類,基於接收到的所述資料庫查詢對所述資料庫中存在的數據進行聚類,並向用戶顯示所述查詢的結果;
●保留所述聚類後數據;
●創建包括集群元數據、至少一個數據元素以及所述保留的集群數據的至少一個集群緩存;以及
●當接收到新查詢並且如果所述新查詢與所述數據元素和/或所述集群元數據相匹配,重用來自所述集群緩存的所述聚類後數據用於所述新查詢的處理。
在本發明的又一方面中,提供了一種系統和方法以通過使用動態聚類避免並行聚合的合併階段來提高通過聚合分組的性能,並且進一步通過緩存聚類信息並將其存儲在工作線程的本地存儲器中來優化所述系統。所述集群信息的緩存基於用戶配置以避免系統存儲器的過度使用。
在一種實施方式中,通過使用上述技術解決方案,本發明提供了一種用於確定可以用於存儲列的聚類信息的系統存儲器的量的機制。
在一種實施方式中,通過使用上述技術解決方案,本發明提供了一種用於通過避免並行內查詢聚合的第二合併階段來降低組聚合成本的機制。
在一種實施方式中,通過使用上述技術解決方案,本發明提供了一種用於緩存所述集群信息以避免每次執行查詢時都進行聚類操作從而降低執行查詢的成本的機制。
在一種實施方式中,通過使用上述技術解決方案,本發明提供了一種用於移除未使用的聚類信息以便為頻繁使用的列提供空間。
在一種實施方式中,通過使用上述技術解決方案,本發明提供了一種用於將所述聚類信息分布在不同numa節點中以提高本地存儲器使用率並減少緩存未命中的機制。
在一種實施方式中,通過使用上述技術解決方案,本發明提供了一種使得針對一次操作完成的聚類可以通過額外操作重複使用(如group->sort->join)的機制。
附圖說明
該詳細描述是參考附圖描述的。在附圖中,參考編號最左邊的數字表示所述參考編號在該附圖中首次出現。相同編號在所有附圖中用以指代類似的特殊和組件。
圖1示出現有技術專利文獻us5850547中公開的通過在計算系統中執行聚合函數的並行處理的解決方案。
圖2示出現有技術文獻us7779008中公開的通過將初始數據劃分成多片(或數據可能已經劃分好)的解決方案。
圖3示出b-mpsm分份join算法,其中分配用於在每個節點上執行聚合的一個線程/進程,然後在最後匯總每個節點的結果,然後投射得出的結果。
圖4示出根據本發明主題的實施例的這樣一種機制:通過使用動態聚類避免並行聚合的合併階段來提高通過聚合分組的性能,並且進一步通過緩存聚類信息並將其存儲在工作線程的本地存儲器中來優化系統。
圖5示出根據本發明主題的實施例的用於從資料庫請求數據的資料庫查詢的並行優化的系統。
圖6示出根據本發明主題的實施例的用於從資料庫請求數據的資料庫查詢的並行優化的方法。
圖7示出根據本發明主題的實施例的作為樣本的一組記錄,其中示出用於聚類的方案。
具體實施方式
以下結合本發明實施例中的附圖清楚地描述了本發明實施例中的技術解決方案。顯然,所描述的實施例僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其它實施例,都屬於本發明保護的範圍。
本發明可以以多種方式實施,包括作為過程、裝置、系統、物質組合物、計算機可讀介質如計算機可讀存儲介質,或其中程序指令通過光或電子通信鏈路發送的計算機網絡。在本說明書中,這些實現方式或本發明可以採取的任何其它形式可被稱為技術。在一般情況下,所公開的過程的步驟的順序可以在本發明的範圍內進行調整。
下面結合圖解本發明的原理的附圖提供了本發明的一個或多個實施例的詳細描述。本發明是結合此類實施例進行描述的,但本發明並不限於任何實施例。本發明的範圍僅由權利要求書限定,並且本發明涵蓋各種可替代物、修改和等效物。為了提供對本發明的透徹理解,以下描述中闡述了各種具體細節。提供這些細節是為了示例的目的,並且本發明可以在沒有這些具體細節中的一些或全部的情況下根據權利要求進行實踐。出於清晰的目的,與本發明相關的技術領域中已知的技術材料未進行詳細描述,以免使本發明不必要地模糊不清。
公開了用於使用集群緩存進行資料庫查詢的並行優化的系統和方法。
現參照圖4,圖4示出根據本發明主題的實施例的這樣一種機制:通過使用動態聚類避免並行聚合的合併階段來提高通過聚合分組的性能,並且進一步通過緩存聚類信息並將其存儲在工作線程的本地存儲器中來優化系統。圖4示出兩個關鍵點,(1)數據被聚類成被命名為「集群1」、「集群2」等的多個塊,(2)存在關聯到每個集群以處理這些集群的名為工作線程的線程。在一種典型的實施方式中,需要分組的所有數據使用像基數聚類的任何已知的聚類機制進行聚類。每個集群包含排他性信息,即沒有兩個集群包含相同的信息。這些集群中的每個集群均位於與一個或其它numa節點相關聯的存儲器中。為了處理這些集群中的數據,一個線程與每個集群相關聯。這些線程與關聯到相應numa節點的核心相聯繫。
在一種實施方式中,提供了系統和方法以通過使用動態聚類避免並行聚合的合併階段來提高通過聚合分組的性能,並且進一步通過緩存聚類信息並將其存儲在工作線程的本地存儲器中來優化系統。集群信息的緩存基於用戶配置以避免系統存儲器的過度使用。
雖然針對通過使用動態聚類避免並行聚合的合併階段來提高通過聚合分組的性能進行描述的方面可以以任何數量的不同的計算系統、環境和/或配置來實施,但實施例是在下面的示例性系統、設備和方法的上下文中進行描述的。
現參照圖5,圖5示出根據本發明主題的實施例的用於從資料庫(110)請求數據的資料庫查詢的並行優化的系統(100)。
在一種實施方式中,該系統包括資料庫(110)、耦合到存儲器(108)的處理器(104),並且處理器(110)用於:基於接收到的資料庫查詢的性質和/或統計確定(112)資料庫查詢是否需要進行聚類;如果確定查詢需要進行聚類,基於接收到的資料庫查詢對資料庫中存在的數據進行聚類(114),並在查詢處理後向用戶顯示查詢的結果;保留(116)聚類後數據,並由此創建包括集群元數據、至少一個數據元素以及保留的集群數據的至少一個集群緩存;以及當接收到新查詢並且如果新查詢與數據元素和/或集群元數據相匹配,重用(118)來自集群緩存的聚類後數據用於查詢處理。
在一種實施方式中,系統(100)與用戶設備/資料庫客戶端系統(102)可通信地耦合。雖然本發明主題是在認為系統(100)被實施為單獨的計算單元的條件下進行了闡述,但可以理解,系統(100)也可以在伺服器上,在諸如膝上型計算機、臺式計算機、筆記本、工作站、大型計算機、伺服器、網絡伺服器等各種計算系統中進行實施。應理解,系統(100)可以由多個用戶通過一個或多個用戶設備/客戶端系統102-1、102-2……102-n或駐留在用戶設備102上的應用進行訪問,這些用戶設備/客戶端系統在下文中統稱為用戶(102)。用戶設備(102)的示例可以包括,但不限於,可攜式計算機、個人數字助理、手持式設備和工作站。用戶設備(102)通過網絡(未示出)通信地耦合到系統(100)。
在一種實施方式中,網絡可以是無線網絡、有線網絡或其組合。網絡可以實施為不同類型的網絡,如內聯網、本地區域網(localareanetwork,lan)、廣域網(wideareanetwork,wan)、網際網路等。網絡可以是專用網絡或共享網絡。共享網絡代表使用不同協議的不同類型的網絡的聯合以相互通信,協議例如,超文本傳輸協議(hypertexttransferprotocol,http)、傳輸控制協議/網際協議(transmissioncontrolprotocol/internetprotocol,tcp/ip)、無線應用協議(wirelessapplicationprotocol,wap)等。另外,網絡可以包括各種網絡設備,包括路由器、橋接器、伺服器、計算設備、存儲設備等。
在一種實施方式中,該至少一個處理器(104)可以實施為一個或多個微處理器、微型計算機、微控制器、數位訊號處理器、中央處理單元、狀態機、邏輯電路系統,和/或基於操作指令操縱信號的任何設備。除其它能力之外,該至少一個處理器(104)用於獲取和執行存儲在存儲器(108)中的計算機可讀指令。
接口(106)可以包括各種軟體和硬體接口,例如,網絡接口、圖形用戶界面等。接口(204)可以允許客戶端系統/用戶(102)直接地或通過系統(100)與用戶交互。另外,接口(106)可以使得系統(100)能夠與其它計算設備,如網絡伺服器和外部數據伺服器(未示出),進行通信。接口(106)可以方便各種網絡和協議類型內的多種通信,網絡包括:有線網絡,例如lan、電纜等,以及無線網絡,例如wlan、蜂窩,或衛星。接口(106)可以包括用於將多個設備彼此連接或連接到另一伺服器的一個或多個埠。
存儲器(108)可以包括本領域中已知的任何計算機可讀介質,包括:例如易失性存儲器,如靜態隨機存取存儲器(staticrandomaccessmemory,sram)和動態隨機存取存儲器(dynamicrandomaccessmemory,dram),和/或非易失性存儲器,如只讀存儲器(readonlymemory,rom)、可擦可編程rom、閃速存儲器、硬碟、光碟和磁帶。存儲器(108)可以包括至少一個查詢編譯器,查詢編譯器用於為接收到的資料庫查詢準備具有多個計劃節點的樹結構中的執行計劃。應注意,查詢編譯器是常規編譯器,並且執行計劃生成是利用現有技術中可用的傳統/約定方法完成的。
在一種實施方式中,用戶(102)通過向位於資料庫伺服器系統(100)處或系統(100)的資料庫(110)發送/發起查詢來與系統(100)交互。
在一種實施方式中,系統(100)用於檢查來自資料庫客戶端的查詢請求是否是聚類的候選者/要求進行聚類。檢查可以基於查詢的性質以及統計來執行。查詢的性質的示例可以包括但不限於查詢的類型,如join或groupaggregate。如果查詢的性質適合進行聚類(通常是join、groupaggregate、sort),那麼可以選擇該查詢。然後對統計進行檢查。如果查詢要選擇多條記錄,那麼聚類是可選項。統計通常是基於直方圖的統計,是資料庫領域中的基本概念。然後資料庫對數據進行聚類,並執行查詢中提供的操作。在操作結束時,結果數據被投射到客戶端。
在一種實施方式中,在將數據投射到客戶端後,聚類後數據由系統保留。這種保留被稱為「集群緩存」。集群緩存的細節在下文章節中進行闡述。
在一種實施方式中,當第二(或另外的或新的)查詢從客戶端到達資料庫/資料庫伺服器時,資料庫確定該查詢是否可以使用聚類或集群緩存。如果查詢可以使用集群緩存,資料庫伺服器檢查聚類後信息是否已在集群緩存中可用。如果數據已經可用,那麼資料庫伺服器將重用集群緩存中的信息。
在一種實施方式中,如果聚類後數據已在集群緩存中可用,可以重用來自集群緩存的聚類後數據,並且如果可用,重用聚類後數據用於新查詢的處理。
在一種實施方式中,集群緩存使用增量緩存更新模型進行更新。
在一種實施方式中,接收的資料庫查詢的性質是資料庫查詢的從包括以下各項的組中選擇的特徵:(ⅰ)groupby子句的屬性,(ⅱ)where子句的屬性,(ⅱ)join子句的屬性,(ⅳ)having子句的屬性,以及(v)分組聚合函數的屬性。
在一種實施方式中,統計是基於直方圖的統計。統計傳統上在所有dbms中進行計算。這些統計可以是基於採樣的並存儲為直方圖。統計的經典用法是「選擇性估算」。本發明使用相同統計對數據進行聚類。用於選擇性估算的該直方圖在以下文獻中進行了闡述:「用於範圍謂詞的選擇性估算的改進的直方圖」,poosala、viswanath等人,acmsigmod檔案,第25卷,第2篇,acm,1996。在一種實施方式中,本發明可以使用本發明中的僅一種查詢統計,即「選擇性統計」。它們是隨機抽樣的統計。一種隨機抽樣是以下文獻中闡述的蓄水池隨機抽樣:維特、傑弗裡s,「利用蓄水池的隨機抽樣」,acm數學軟體會報(toms)11.1(1985):第37至57頁。
在一種實施方式中,聚類通過從基於基數的聚類,或基於散列的聚類,或其任意組合中選擇的用於聚類的技術中的任何一種執行。
在一種實施方式中,基於系統的配置,聚類後數據包括存儲在資料庫的表中的全局行id或記錄,或存儲在資料庫的表中的記錄的子集中的至少一種。
在一種實施方式中,數據元素包括表id、集群列、聚類模型、過濾條件、存儲器親和性,或其任意組合中的至少一種。
在一種實施方式中,查詢處理由查詢優化器執行。
在一種實施方式中,資料庫查詢中包括的分組聚合函數從count、avg、sum、min、max、variance和standard_deviation聚合函數進行選擇。
在一種實施方式中,資料庫查詢利用sql查詢語言編寫,存儲器是非對稱存儲器。
集群緩存
在一種實施方式中,為了避免並行組聚合操作的合併階段,表記錄被基於某一基數位劃分成不同的組。
在一種實施方式中,表的劃分確保聚合可以針對每個組獨立地計算並且不需要任何合併。
在一種實施方式中,如果為每次查詢執行進行分組,分組將影響組聚合的性能。因此緩存被指定用於存儲頻繁使用的列的聚類信息。
在一種實施方式中,基於用戶輸入,聚類信息可以是全局行id或實際記錄或記錄子集。
在一種實施方式中,當生成組聚合計劃時,基於數據分布使用聚類信息將組分配給每個工作線程。
在一種實施方式中,為了提高並行算法的性能,使用了聚類機制。該聚類可以基於基數的或基於散列的。
在一種實施方式中,基於資料庫伺服器配置,聚類信息可以是全局行id或實際記錄或記錄子集。
在一種實施方式中,本發明中的技術進步通過緩存聚類後結果以避免每次特定查詢到達時都進行聚類來實現。聚類是代價高昂的操作,即使它為並行算法帶來顯著的性能益處。
集群緩存管理
在一種實施方式中,集群緩存的大小可以通過用戶輸入配置值來管理,並且可以通過sql命令來增大或減小。集群緩存的大小可以以字節表示並且通常可以為10mb。
在一種實施方式中,如果緩存大小達到最大並且請求增添用於新列的集群信息的新請求到達,那麼可以將最近最少或最不常用的列的聚類信息從緩存移除。
在一種實施方式中,如果接收到新的聚類信息,增添可以由用戶使用sql命令完成,或者可以由優化器基於系統負載信息在內部完成。例如,假設正在執行像「selectmax(f1)t1groupbyf2」的新查詢的情況。該查詢可以通過來自用戶的形式為「selectmax(f1)fromt1groupbyf2/*hint:clustercache*/」的提示來顯式地聚類和緩存。
該查詢也可以由優化器隱式地聚類和緩存。
在一種實施方式中,集群信息被基於numa節點的數量以及其它系統配置存儲在單獨的存儲器位置。
在一種實施方式中,當系統數據變化時,可以為新修改的數據拍攝快照並對集群信息進行增量更新以減少寫操作的開銷。本領域技術人員可以理解,緩存的關鍵問題之一是何時更新緩存。針對這一問題的簡單的方法是周期性地,例如1分鐘一次,刪除緩存並通過掃描所有相關行來重建緩存。如果緩存具有10m數據,那麼這種方法要求寫入10m。本發明提供了使用針對基於直方圖的緩存的差異更新的方法。在一個示例中,以下專利中提供了一種差異更新的想法:chaudhuri、surajit、rajeevmotwani和viveknarasayya,「用於資料庫系統的使用具有交叉驗證的自適應隨機抽樣的直方圖構建」,美國專利號6,278,989,2001年8月21日。
在一種實施方式中,集群如集群緩存章節中所描述的那樣進行緩存。當對資料庫的寫入發生時,可能緩存數據沒有反映當前信息。一種顯而易見的選擇是在數據變化時重新創建整個緩存。但這是代價高昂的。因此,本發明使得能夠使用增量緩存更新模型來更新現有緩存。在這種情況下,當對數據的寫入發生時,系統確定該數據是否已被緩存。這可以通過在前面(集群緩存)章節中提到的數據結構輕易地計算得知。如果數據已被緩存,對緩存進行合適的修改。例如,如果記錄被刪除,那麼相應的數據也被從緩存刪除。
圖6示出根據本發明主題的實施例的用於從資料庫請求數據的資料庫查詢的並行優化的方法。該方法可以在計算機可執行指令的一般上下文中描述。通常,計算機可執行指令可以包括執行特定功能或實施特定抽象數據類型的例程、程序、對象、組件、數據結構、過程、模塊、函數等。該方法也可以在分布式計算環境中實施,在該環境中,功能由通過通信網絡連結的遠程處理設備執行。在分布式計算環境中,計算機可執行指令可以位於本地和遠程計算機存儲介質中,包括存儲器存儲設備。
方法被描述的順序並不意在被解釋為限制,並且任何數量的所描述的方法框可以按任何順序進行組合以實施該方法或可替代方法。此外,在不脫離本文中描述的主題的範圍的情況下,可以將單獨塊從該方法中刪除。另外,該方法可以在任何合適的硬體、軟體、固件或其組合中實施。然而,為了便於闡述,在下文描述的實施例中,可以認為該方法是在上文描述的系統(100)中實施的。
在方框602中,接收到資料庫查詢,並且系統確定接收到的查詢是否需要進行聚類。
在方框604中,以常規方式執行接收到的資料庫查詢,並且將基於執行的結果顯示給用戶。
在方框606中,在執行查詢並且將結果顯示給用戶之後,系統保留聚類後數據並由此創建集群緩存。
在方框608中,當系統接收到新查詢時,檢查聚類後的預先存儲的緩存以確定接收到查詢是否可以使用來自這些緩存的聚類後數據。如果系統確定數據可以被重新用於處理查詢,則它獲取集群緩存以及與緩存相關聯的數據以供進一步處理。
在一種實施方式中,該方法包括,如果聚類後數據已在集群緩存中可用,重用聚類後數據用於新查詢的處理。
在一種實施方式中,該方法包括,使用增量緩存更新模型更新集群緩存。
在一種實施方式中,接收到的查詢的性質是像join或groupaggregate、sort(orderby),或其任意組合之類的一類查詢。
在一種實施方式中,聚類通過從基於基數的聚類,或基於散列的聚類,或其任意組合中選擇的用於聚類的技術中的任何一種執行。
在一種實施方式中,基於系統的配置,聚類後數據包括存儲在資料庫的表中的全局行id或記錄,或存儲在資料庫的表中的記錄的子集中的至少一種。
在一種實施方式中,數據元素包括表id、集群列、聚類模型、過濾條件、存儲器親和性,或其任意組合中的至少一種。
在一種實施方式中,資料庫查詢中包括的分組聚合函數從count、avg、sum、min、max、variance和standard_deviation聚合函數進行選擇。
工作示例:
示例1:在下面提供的示例中,示出系統/資料庫/伺服器如何可以確定查詢是否可以使用聚類:
本領域技術人員可以了解並理解,存在受益於聚類的一組查詢,其包括但不限於,groupaggregate、join、sort(orderby)。出於理解的目的,稱這些子句為「集群子句」。這些查詢基於下面給出的兩個條件受益於聚類:
1.查詢的集群子句的選擇性是否足夠高以進行劃分?例如,對該查詢應用過濾器,並且所得的記錄僅為100。這是集群子句的選擇性(100),這一選擇性對於劃分而言過低。
2.查詢的集群子句的基數是否足夠高以進行劃分?例如,對該查詢應用過濾器,並且所得的記錄為10類。這是集群子句的基數(100),這一基數對於劃分而言過低。
以上兩個條件利用下述示例進行闡述:
假設表具有1m條記錄。圖7中示出具有方案的作為樣本的一組記錄。
考慮以下查詢:
「selectsum(sales_value),sum(sales_piece)fromdimension_tabgroupbypdt_idwherepdt_type=『car』;」
這裡聚類子句是「groupby」(groupedaggregate)子句。表中用於產品類型「car」的條目數量形成該集群子句的選擇性。類型為「car」的特定產品的種類(由pdt_id表示)形成集群子句的基數。
例如,如果在1m條記錄中,只有1000輛類型為「car」的產品,那麼選擇性是1000。
例如,如果在1m條記錄中,有1000輛類型為「car」的產品,但僅有10種「car」產品,那麼基數是100。
示例2:在下面提供的示例中,描述了如何將集群緩存存儲在資料庫/資料庫伺服器中以及在查詢到達時如何搜索/查找集群集的概念。
在一種實施方式中,集群緩存的結構如下給出:
從集群結構可以理解,結構主要由兩部分組成:元數據和集群數據本身。集群數據是相當簡單的。行的一些概念應當緩存在集群數據中。它可能是僅row_id或者可能是整個行本身。兩種選擇都是可行的。在以上所示示例中使用了row_id。然而,元數據比較棘手。在下表中利用示例查詢對其進行闡述:
「selectsum(sales_value),sum(sales_piece)fromdimension_tabgroupbypdt_idwherepdt_type=『car』;」
基於集群緩存的元數據,對於給定查詢,可以確定它是否已經緩存。通過三個查詢對此進行闡述,並且計算如下執行:
假設到達的第一查詢是「selectsum(sales_value),sum(sales_piece)fromdimension_tabgroupbypdt_idwherepdt_type=『car』;」--->q1。為這一查詢建立集群緩存。
現在假設到達的第二查詢是「selectsales_value,sales_piecefromdimension_taborderbypdt_idwherepdt_type=『car』;」--->q2。可以理解這一查詢適於進行聚類。對於這一查詢,集群列和過濾條件與查詢1匹配。因此,這一查詢可以使用集群緩存中的數據。
現在假設到達的第三查詢是「selectsum(sales_value),sum(sales_piece)fromdimension_tabgroupbypdt_idwherepdt_type=『bike』;」--->q3。
可以理解該查詢適於進行聚類。然而,用於這一查詢的條件不與集群緩存的條件匹配。因此,這一查詢無法使用集群緩存中的數據。
上文討論的示例性實施例可以提供某些優勢。雖然不要求實施本發明的各方面,但這些優勢可以包括:
1.本發明中公開的機制提高了傾向於分組在同一組列中的olap查詢的性能。主要益處在存在較少寫入和較多查詢時實現。
2.該機制公開了將中間結果緩存到分組聚合的概念。它緩存集群信息,以避免為每次查詢執行進行聚類操作,從而降低查詢執行的成本。
3.智能pcc的「連續etl」場景中的機制使查詢的性能提高超過70%。
4.該機制使用緩存來存儲組聚合操作中頻繁使用的列的聚類信息/集群數據,以提高並行組聚合操作的性能。
5.該機制將聚類信息分布在不同numa節點中以避免遠程讀取存儲器,由此提高本地存儲器的利用率並減少緩存未命中。
6.該機制使用用戶給出的信息來管理集群緩存,以通過系統配置控制系統存儲器的使用。
7.該機制利用利用率統計來管理緩存以避免集群緩存中存在陳舊數據。
8.該機制允許用戶使用sql命令來增添或移除集群信息以便為用戶提高靈活性。
9.該機制通過緩存中間結果來提高組聚合執行速度從而使許多查詢受益。
10.該機制為用戶提供了可配置且可管理的緩存來存儲關於組聚合中使用的列的聚類信息。
11.該機制使得能夠從緩存清除未使用的聚類信息以便為新的聚類信息騰出空間(以便為頻繁使用的列提供空間)。
雖然已經以特定於結構特徵和/或方法的語言對用於使用集群緩存進行資料庫查詢的並行優化的系統和方法進行了描述,但應理解,所附權利要求不一定局限於所描述的具體特徵或方法。而是,這些具體特徵和方法作為用於使用集群緩存進行資料庫查詢的並行優化的系統和方法的實施的示例進行公開。