国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      面向并發(fā)olap的數(shù)據(jù)庫查詢處理方法

      文檔序號(hào):6368187閱讀:250來源:國知局
      專利名稱:面向并發(fā)olap的數(shù)據(jù)庫查詢處理方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種數(shù)據(jù)庫查詢處理方法,尤其涉及一種通過謂詞向量的批量位處理技術(shù),降低并發(fā)OLAP中星型連接的代價(jià),提高并發(fā)查詢處理能力的方法,屬于數(shù)據(jù)庫管理技術(shù)領(lǐng)域。
      背景技術(shù)
      當(dāng)今,數(shù)據(jù)處理大致可以分成兩類聯(lián)機(jī)事務(wù)處理(on-line transactionprocessing,簡寫為 0LTP)和聯(lián)機(jī)分析處理(On-Line Analytical Processing,簡寫為0LAP)。OLTP主要是日常的事務(wù)處理,例如銀行交易。OLAP的設(shè)計(jì)目標(biāo)是滿足決策支持或者多維環(huán)境下特定的查詢和報(bào)表需求。包括OLAP在內(nèi)的諸多應(yīng)用驅(qū)動(dòng)了數(shù)據(jù)倉庫技術(shù)的出現(xiàn)和發(fā)展;而數(shù)據(jù)倉庫技術(shù)反過來又促進(jìn)了 OLAP技術(shù)的發(fā)展。在OLAP中,1/0(輸入/輸出)是最主要的性能瓶頸。當(dāng)并發(fā)查詢獨(dú)立地訪問磁盤上的事實(shí)表時(shí),大量的隨機(jī)位置訪問會(huì)產(chǎn)生巨大的磁盤尋道延遲,極大地降低磁盤的有效吞吐性能。目前,并發(fā)查詢處理的主流技術(shù)是對(duì)慢速磁盤上的事實(shí)表1/0訪問進(jìn)行共享,并消除不同查詢處理任務(wù)對(duì)磁盤訪問的爭用。在這個(gè)過程中,技術(shù)的關(guān)鍵是建立共享I/o上的并發(fā)查詢處理代價(jià)模型,獲得I/o延遲與緩存數(shù)據(jù)上的并發(fā)查詢處理延遲之間的最佳負(fù)載匹配。但是,在OLAP中存在復(fù)雜的星型連接操作,導(dǎo)致并發(fā)查詢處理的整體執(zhí)行時(shí)間隨查詢的不同而難以預(yù)期,無法獲得統(tǒng)一的并發(fā)查詢處理代價(jià)模型。另外,在傳統(tǒng)的磁盤數(shù)據(jù)庫中,維表及查詢處理中所涉及到的HASH聚集表等臨時(shí)數(shù)據(jù)結(jié)構(gòu)也需要磁盤訪問,這又進(jìn)一步降低了磁盤1/0的性能。在共享1/0的情況下,并發(fā)查詢處理所面臨的關(guān)鍵技術(shù)挑戰(zhàn)有三點(diǎn)一是在查詢處理時(shí)將維表需要的數(shù)據(jù)遷移到內(nèi)存中,以消除或減少與事實(shí)表掃描所造成的I/o爭用;二是優(yōu)化設(shè)計(jì)OLAP查詢處理算法,實(shí)現(xiàn)對(duì)不同選擇率、不同維表連接數(shù)量、不同查詢參數(shù)的多樣化查詢進(jìn)行常量執(zhí)行時(shí)間的可預(yù)期查詢處理技術(shù)研究,消除不同查詢之間的性能差異;三是建立可靠的共享1/0并發(fā)查詢處理代價(jià)模型,根據(jù)數(shù)據(jù)庫存儲(chǔ)模型(行存儲(chǔ)、列存儲(chǔ))和磁盤1/0性能(磁盤、SSD、RAID)設(shè)置合理的并發(fā)查詢負(fù)載,優(yōu)化系統(tǒng)資源??深A(yù)期查詢處理技術(shù)的一個(gè)代表性解決方案(IBM BLINK)是通過非規(guī)范化技術(shù)(denormalization)將維表和事實(shí)表進(jìn)行預(yù)連接并進(jìn)行壓縮處理,從而將OLAP中的星型連接操作轉(zhuǎn)換為行壓縮數(shù)據(jù)上基于位操作的過濾和聚集處理,每條記錄的過濾代價(jià)相同,能夠獲得接近常量的查詢處理性能。該技術(shù)方案適用于完全只讀模式的數(shù)據(jù)倉庫。但對(duì)于當(dāng)前日益增加的操作型OLAP處理來說,其物化數(shù)據(jù)的存儲(chǔ)空間代價(jià)和維表更新導(dǎo)致的數(shù)據(jù)全部重構(gòu)代價(jià)影響了該技術(shù)方案的可行性。另外,事實(shí)表記錄與維表記錄之間的參照完整性約束條件使維表在物化時(shí)產(chǎn)生大量重復(fù)數(shù)據(jù),相同維表主鍵所對(duì)應(yīng)的大量重復(fù)數(shù)據(jù)在物化表中需要進(jìn)行大量的重復(fù)謂詞計(jì)算,降低了 CPU的效率。 可預(yù)期查詢處理技術(shù)的另一個(gè)代表性技術(shù)方案是CJ0IN,即通過將維表轉(zhuǎn)換為共享的HASH過濾器和為HASH過濾器中的每一條記錄附加并發(fā)查詢謂詞結(jié)果向量來標(biāo)識(shí)該記錄滿足哪些查詢的謂詞表達(dá)式。OLAP中的星型連接操作在執(zhí)行時(shí)將事實(shí)表的每一條記錄依次推入每一個(gè)HASH過濾器,通過查詢位向量的AND位運(yùn)算來選擇滿足全部謂詞條件的查詢,并將結(jié)果集分發(fā)給各個(gè)查詢對(duì)應(yīng)的聚集器,從而完成分組聚集計(jì)算。該技術(shù)方案需要為查詢組在每個(gè)維表上生成公共HASH聚集表,由于各個(gè)查詢選擇率和分組屬性各不相同,公共HASH聚集表所包含的維屬性數(shù)量較多,HASH聚集表的記錄數(shù)量也較多,甚至HASH聚集表中可能需要存儲(chǔ)全部的維表記錄。這種公共HASH聚集表的膨脹會(huì)導(dǎo)致HASH過濾(HASH連接)的代價(jià)增大,HASH聚集表需要磁盤交換的可能性增大,查詢的平均性能下降,每個(gè)HASH過濾器上的性能難以預(yù)測。當(dāng)查詢的選擇率較低時(shí),組查詢需要在HASH過濾器之間傳遞大 量的數(shù)據(jù),甚至當(dāng)最終查詢位向量全為零時(shí)也需要HASH過濾器之間傳遞數(shù)據(jù),但實(shí)際上只有查詢位向量結(jié)果中非零位置對(duì)應(yīng)的查詢才需要使用HASH過濾器之間傳遞的全部數(shù)據(jù),這就造成了大量內(nèi)存帶寬的浪費(fèi)。

      發(fā)明內(nèi)容
      本發(fā)明所要解決的技術(shù)問題在于提供一種面向并發(fā)OLAP的數(shù)據(jù)庫查詢處理方法。該方法通過謂詞向量的批量位處理技術(shù),降低并發(fā)OLAP中星型連接的代價(jià),從而提高并發(fā)查詢的處理能力。為解決上述的技術(shù)問題,本發(fā)明采用下述的技術(shù)方案一種面向并發(fā)OLAP的數(shù)據(jù)庫查詢處理方法,在基于謂詞向量的內(nèi)存OLAP星型連接優(yōu)化基礎(chǔ)上進(jìn)行基于批量查詢謂詞向量位運(yùn)算的并發(fā)OLAP查詢處理,其特征在于所述基于謂詞向量的內(nèi)存OLAP星型連接優(yōu)化包括如下步驟實(shí)現(xiàn)維表在內(nèi)存中的加載;將查詢中的謂詞操作結(jié)果向量化;通過查詢相關(guān)的多個(gè)維表上的謂詞向量上的位運(yùn)算來完成星型多表連接的過濾操作,選擇滿足條件的事實(shí)表記錄;將維表主鍵映射為內(nèi)存列存儲(chǔ)維屬性向量的內(nèi)存偏移地址以實(shí)現(xiàn)對(duì)維表分組屬性值的直接訪問;所述基于批量查詢謂詞向量位運(yùn)算的并發(fā)OLAP查詢處理包括如下步驟在指定的時(shí)間窗口內(nèi)將并發(fā)查詢分組,以批處理方式執(zhí)行查詢;采用多位謂詞向量存儲(chǔ)并發(fā)查詢組的謂詞操作結(jié)果,其中謂詞向量每一個(gè)數(shù)據(jù)項(xiàng)的每一位對(duì)應(yīng)指定的查詢謂詞操作結(jié)果標(biāo)識(shí)位,在執(zhí)行星型連接位圖過濾操作時(shí)以多位謂詞向量為單位執(zhí)行位操作,操作結(jié)果中I的位置表示滿足全部維表中謂詞條件的查詢編號(hào),調(diào)用謂詞向量結(jié)果位中I對(duì)應(yīng)的HASH聚集處理線程完成當(dāng)前事實(shí)表記錄上的迭代聚集計(jì)算。其中較優(yōu)地,在內(nèi)存容量不夠的情況下,按如下優(yōu)先級(jí)進(jìn)行維表內(nèi)存化分組屬性—謂詞操作屬性一全部維屬性。所述分組屬性和所述謂詞操作屬性在查詢處理時(shí)通過增量的方式加載,并在內(nèi)存維屬性管理中按LRU策略淘汰訪問頻率低的維屬性列以容納新的維屬性列。其中較優(yōu)地,維表被加載到內(nèi)存后轉(zhuǎn)換為內(nèi)存維屬性數(shù)組,數(shù)組下標(biāo)與維表主鍵值對(duì)應(yīng),事實(shí)表的外鍵被直接映射為維屬性列的下標(biāo);每個(gè)維表預(yù)設(shè)一個(gè)謂詞向量,每個(gè)查詢?cè)趫?zhí)行謂詞操作時(shí)更新謂詞向量內(nèi)容,用I和0標(biāo)識(shí)每條維表記錄對(duì)當(dāng)前查詢謂詞的滿足狀態(tài)。其中較優(yōu)地,將事實(shí)表的外鍵映射為謂詞向量位圖中指定的位,然后將多個(gè)謂詞向量的位數(shù)據(jù)進(jìn)行位運(yùn)算,完成多個(gè)維表上星型連接結(jié)果的過濾判斷。
      其中較優(yōu)地,按照并發(fā)查詢?nèi)蝿?wù)的數(shù)量預(yù)先設(shè)置多位謂詞向量,所述謂詞向量中位的位置代表并發(fā)查詢中的查詢號(hào),查詢組中的查詢完成謂詞操作后,將謂詞操作結(jié)果記錄于謂詞向量數(shù)組中每一個(gè)多位向量單元中與查詢號(hào)相對(duì)應(yīng)的位置。其中較優(yōu)地,對(duì)于順序掃描的每一條事實(shí)表記錄,根據(jù)外鍵值直接定位到相應(yīng)維表的謂詞向量數(shù)組的指定單元,然后將各維表謂詞向量數(shù)組中指定單元的數(shù)據(jù)進(jìn)行位運(yùn)算,獲得全局并發(fā)查詢連接過濾結(jié)果。其中較優(yōu)地,根據(jù)所述全局并發(fā)查詢連接過濾結(jié)果中位串中I的位置調(diào)用對(duì)應(yīng)查詢的HASH聚集處理線程,對(duì)當(dāng)前事實(shí)表記錄按實(shí)時(shí)抽取的維表分組屬性值進(jìn)行并行HASH聚集計(jì)算。
      在所述并行HASH聚集計(jì)算中,為每一個(gè)查詢分配一個(gè)HASH聚集處理線程,在該線程內(nèi)創(chuàng)建HASH聚集表;多個(gè)HASH聚集處理線程共享多核處理器的處理核心,由操作系統(tǒng)為各HASH聚集處理線程動(dòng)態(tài)分配處理核心資源?;蛘撸谒霾⑿蠬ASH聚集計(jì)算中,為每一個(gè)并發(fā)查詢組設(shè)置統(tǒng)一的HASH聚集處理接口,在統(tǒng)一的并發(fā)量查詢處理線程內(nèi)為每一個(gè)查詢?cè)O(shè)置HASH聚集表,統(tǒng)一處理HASH聚集計(jì)算。與現(xiàn)有技術(shù)相比較,本發(fā)明具有如下的有益效果I. OLAP的多表連接采用謂詞向量上的流水線(pipeline)模式,不產(chǎn)生中間連接
      結(jié)果;2.采用鍵值-地址映射保證連接操作的可預(yù)期性能,支持對(duì)分組屬性的后物化訪問策略;3.謂詞向量數(shù)組通過串行的位運(yùn)算實(shí)現(xiàn)并發(fā)OLAP的連接處理過程,分組聚集操作由于查詢整體的低選擇率而減少執(zhí)行次數(shù),提高了并發(fā)查詢處理的CPU效率。


      下面結(jié)合附圖和具體實(shí)施方式
      對(duì)本發(fā)明做進(jìn)一步的詳細(xì)說明。圖I為基于謂詞向量的內(nèi)存OLAP星型連接優(yōu)化示意圖;圖2為基于批量查詢謂詞向量位運(yùn)算的并發(fā)OLAP查詢處理示意圖;圖3為基于共享磁盤事實(shí)表掃描的并發(fā)OLAP查詢處理示意圖。
      具體實(shí)施例方式前已述及,現(xiàn)有技術(shù)中并沒有可靠的共享I/O并發(fā)查詢處理代價(jià)模型,因此無法針對(duì)不同的存儲(chǔ)模型和硬件設(shè)置進(jìn)行優(yōu)化設(shè)計(jì)。為此,本發(fā)明提供了一種面向并發(fā)OLAP的數(shù)據(jù)庫查詢處理方法(簡稱為DDTA-CJ0IN方法)。該DDTA-CJ0IN方法尤其適合在多核處理器平臺(tái)中使用,包括基于謂詞向量的內(nèi)存OLAP星型連接優(yōu)化和基于批量查詢謂詞向量位運(yùn)算的并發(fā)OLAP查詢處理兩方面的技術(shù)內(nèi)容,具體包括對(duì)OLAP的多表連接操作向量化,通過并發(fā)查詢向量組的位操作完成并行星型連接處理和后續(xù)的HASH分組聚集處理等技術(shù)措施。下面對(duì)此展開詳細(xì)的說明。圖I為本發(fā)明中基于謂詞向量的內(nèi)存OLAP星型連接優(yōu)化示意圖。所述基于謂詞向量的內(nèi)存OLAP星型連接優(yōu)化技術(shù)用于提供基于內(nèi)存存儲(chǔ)結(jié)構(gòu)的可預(yù)期OLAP查詢處理性能,包括維表列存儲(chǔ)技術(shù)、謂詞向量技術(shù)、星型謂詞向量位圖過濾(bitmap filtering)技術(shù)、維屬性地址映射和直接訪問技術(shù)幾個(gè)方面。其中,維表列存儲(chǔ)技術(shù)用于實(shí)現(xiàn)內(nèi)存列存儲(chǔ)維表管理;謂詞向量技術(shù)用于將查詢中的謂詞操作結(jié)果向量化;星型謂詞向量位圖過濾技術(shù)是指通過查詢相關(guān)的多個(gè)維表上的謂詞向量上的位運(yùn)算來完成星型多表連接的過濾操作,選擇滿足條件的事實(shí)表記錄;維屬性地址映射和直接訪問技術(shù)是指將維表主鍵映射為內(nèi)存列存儲(chǔ)維屬性的內(nèi)存偏移地址以實(shí)現(xiàn)對(duì)維表分組屬性值的直接訪問。具體說明如下(I)維表列存儲(chǔ)管理維表存儲(chǔ)于磁盤數(shù)據(jù)庫中,在查詢處理時(shí)根據(jù)維表大小與內(nèi)存可用容量選擇維表的內(nèi)存加載策略I)如果內(nèi)存足夠大,則將維表全部加載到內(nèi)存中。在加載的過程中完成磁盤存儲(chǔ)與內(nèi)存存儲(chǔ)的行/列轉(zhuǎn)換,將維表存儲(chǔ)于內(nèi)存數(shù)組結(jié)構(gòu)的列存儲(chǔ)模型中。每個(gè)維表有獨(dú)立的入口地址,可以實(shí)現(xiàn)通過偏移地址訪問維屬性列的任意數(shù)據(jù)項(xiàng); 2)如果內(nèi)存容量不足以容納全部維表記錄,則按如下優(yōu)先級(jí)進(jìn)行維表內(nèi)存化分組屬性一謂詞操作屬性一全部維屬性。維屬性在內(nèi)存列中存儲(chǔ)時(shí)可以應(yīng)用數(shù)據(jù)壓縮技術(shù)進(jìn)一步降低內(nèi)存消耗。分組屬性和謂詞操作屬性可以在查詢處理時(shí)通過增量的方式加載,并在內(nèi)存維屬性管理中按LRU (Least Recently Used,最近最少使用)策略淘汰訪問頻率低的維屬性列以容納新的維屬性列。(2)謂詞向量管理謂詞向量管理是指為每一個(gè)維表生成一個(gè)附加的位圖(bitmap),記錄謂詞表達(dá)式作用在當(dāng)前維表的每一個(gè)記錄上的結(jié)果,其中I表示滿足所有謂詞,0表示不滿足,位圖長度與維表行數(shù)相同。如圖I所示,維表被加載到內(nèi)存轉(zhuǎn)換為內(nèi)存維屬性數(shù)組,數(shù)組下標(biāo)與維表主鍵值一一對(duì)應(yīng),事實(shí)表中的外鍵被直接映射為維屬性列的下標(biāo)。每個(gè)維表預(yù)設(shè)一個(gè)謂詞向量(PreVec),每個(gè)查詢?cè)趫?zhí)行謂詞操作時(shí)更新謂詞向量內(nèi)容,用I和0標(biāo)識(shí)每條維表記錄對(duì)當(dāng)前查詢謂詞的滿足狀態(tài)。維表謂詞向量可以作為維表的一個(gè)附加結(jié)構(gòu)供查詢復(fù)用,即新的查詢只需要更新謂詞向量的位圖內(nèi)容而不用為每一個(gè)查詢生成一個(gè)新的謂詞向量。在此需要說明的是,本發(fā)明中的向量相當(dāng)于動(dòng)態(tài)數(shù)組,兩者的含義基本相同。(3)星型謂詞向量位圖過濾內(nèi)存維屬性列和謂詞向量通過鍵值-地址映射將維表主鍵映射為維屬性數(shù)組或 位圖下標(biāo)。其技術(shù)支持是維表采用代理鍵結(jié)構(gòu),用自然序列1,2,3,…作為維表主鍵,不滿足代理鍵要求的維表可以在ETL (Extract Transform Load,數(shù)據(jù)抽取、轉(zhuǎn)換、裝載)過程中進(jìn)行轉(zhuǎn)換,作為OLAP處理的一個(gè)基本模式約束條件。星型謂詞向量位圖過濾是指將事實(shí)表記錄的外鍵映射為謂詞向量位圖中指定的位,然后將多個(gè)謂詞向量的位數(shù)據(jù)進(jìn)行AND(與)位運(yùn)算,完成多個(gè)維表上星型連接結(jié)果的過濾判斷。由于謂詞向量采用位圖存儲(chǔ),因此數(shù)據(jù)量很小,能夠滿足緩存(cache)運(yùn)算的要求,因此謂詞向量的訪問順序不影響星型謂詞向量位圖過濾的性能。(4)維屬性地址映射和直接訪問
      根據(jù)代理鍵特性,在分組維屬性列上可以直接按照事實(shí)表外鍵值映射的內(nèi)存維屬性數(shù)組偏移地址進(jìn)行訪問。因此在OLAP查詢處理時(shí),采用私有的謂詞向量和共享的分組維屬性列這一策略,能夠?qū)鹘y(tǒng)HASH連接中提前物化的策略改進(jìn)為先執(zhí)行星型謂詞向量位圖過濾的連接操作,再執(zhí)行后物化分組聚集策略,從而可以保證滿足所有連接過濾條件的事實(shí)表記錄,僅在最后階段才訪問維表分組屬性。(5) HASH 分組聚集將抽取出的維表分組屬性和事實(shí)表度量屬性組合為查詢結(jié)果記錄,通過HASH聚集器進(jìn)行聚集計(jì)算。參見圖I所示,基于上述的內(nèi)存OLAP星型連接優(yōu)化技術(shù),OLAP的查詢處理過程被分為三個(gè)階段(I)通過事實(shí)表記錄外鍵映射謂詞向量完成星型連接位圖過濾。如事實(shí)表記錄[2,2,1,12121]中的三個(gè)外鍵值2, 2,1分別映射到維表customer, supplier, date謂詞向量的第2,2,I位,并將三個(gè)位置中的位數(shù)據(jù)進(jìn)行AND位操作(1AND1AND I)。(2)如 果結(jié)果為0則跳過后續(xù)處理過程,繼續(xù)處理下一條事實(shí)表記錄;如果位操作結(jié)果為1,通過SQL中的分組屬性直接訪問分組維屬性列c_nation, s_nation, d_year中下標(biāo)為2,2,1的單元,抽取出分組屬性[“China”,“Russia”,1997]并與度量屬性值12121合并為查詢結(jié)果[“China”,” Russia”,1997,12121]。(3)將查詢結(jié)果推到HASH聚集器,由HASH函數(shù)映射到對(duì)應(yīng)HASH桶的分組單元中進(jìn)行聚集計(jì)算。圖2為本發(fā)明中基于批量查詢謂詞向量位運(yùn)算的并發(fā)OLAP查詢處理示意圖。所述基于批量查詢謂詞向量位運(yùn)算的并發(fā)OLAP查詢處理技術(shù)以謂詞向量數(shù)組上的位運(yùn)算為基礎(chǔ)實(shí)現(xiàn)并發(fā)查詢處理,具體包括并發(fā)查詢匯集操作、謂詞向量數(shù)組、基于位運(yùn)算的并發(fā)查詢星型連接位圖過濾和并行HASH聚集處理幾個(gè)方面。其中,并發(fā)查詢匯集操作是在指定的時(shí)間窗口內(nèi)將并發(fā)查詢分組,查詢以批處理方式執(zhí)行。謂詞向量數(shù)組指采用多位謂詞向量存儲(chǔ)并發(fā)查詢組的謂詞操作結(jié)果,謂詞向量每一個(gè)數(shù)據(jù)項(xiàng)的每一位對(duì)應(yīng)指定的查詢謂詞操作結(jié)果標(biāo)識(shí)位?;谖贿\(yùn)算的并發(fā)查詢星型連接位圖過濾是指在執(zhí)行星型連接位圖過濾操作時(shí)以多位謂詞向量為單位執(zhí)行AND(與)位操作,操作結(jié)果中I的位置表示滿足全部維表中謂詞條件的查詢編號(hào)。并行HASH聚集處理是指調(diào)用謂詞向量結(jié)果位中I對(duì)應(yīng)的HASH聚集處理線程完成當(dāng)前事實(shí)表記錄上的迭代聚集計(jì)算。具體說明如下(I)事實(shí)表的順序掃描或循環(huán)掃描事實(shí)表為所有并發(fā)OLAP查詢?nèi)蝿?wù)提供公共的數(shù)據(jù)源。并發(fā)OLAP查詢?nèi)蝿?wù)可以采用聚集分組批處理方式,也可以通過獨(dú)立的OLAP處理線程共享事實(shí)表掃描。如果事實(shí)表存儲(chǔ)于外部存儲(chǔ)設(shè)備,如磁盤或SSD (固態(tài)硬盤),事實(shí)表共享掃描的I/O操作與內(nèi)存并發(fā)OLAP處理線程需要同步以保證I/O的數(shù)據(jù)供給與CPU的數(shù)據(jù)消費(fèi)速度相匹配。(2)并發(fā)查詢匯集操作并發(fā)查詢匯集操作在系統(tǒng)規(guī)定的時(shí)間窗口中匯集并發(fā)查詢?nèi)蝿?wù),并進(jìn)行OLAP查詢的規(guī)范化。如圖2所示,并發(fā)查詢匯集操作匯聚并發(fā)查詢?nèi)蝿?wù),并按并發(fā)查詢匯集窗口設(shè)置并發(fā)查詢組。前已述及,基于謂詞向量的內(nèi)存OLAP星型連接優(yōu)化技術(shù)將OLAP查詢統(tǒng)一為謂詞生成、星型連接位圖過濾連接和HASH聚集三個(gè)過程。每個(gè)OLAP查詢的查詢執(zhí)行計(jì)劃完全相同,只是謂詞向量的內(nèi)容和HASH聚集中分組屬性參數(shù)的變化,因此并發(fā)查詢的匯集操作不必象傳統(tǒng)技術(shù)一樣需要按查詢相似度進(jìn)行聚集。并發(fā)查詢匯集操作可以設(shè)置兩個(gè)線程,一個(gè)用于將匯集后的查詢?nèi)蝿?wù)多核并行處理,一個(gè)用于匯集當(dāng)前查詢?nèi)蝿?wù)。兩個(gè)并發(fā)查詢匯集操作的匯集操作與執(zhí)行操作的角色在并發(fā)查詢執(zhí)行完畢后動(dòng)態(tài)切換。(3)謂詞向量數(shù)組謂詞向量數(shù)組按照并發(fā)查詢?nèi)蝿?wù)的數(shù)量預(yù)先設(shè)置多位謂詞向量結(jié)構(gòu),謂詞向量位的位置代表并發(fā)查詢中的查詢號(hào),查詢組中的查詢完成謂詞操作后,將謂詞操作結(jié)果記錄于謂詞向量數(shù)組中每一個(gè)多位向量單元中與查詢號(hào)相對(duì)應(yīng)的位置。在圖2中以8個(gè)查詢?yōu)槔?。根?jù)查詢?nèi)蝿?wù)數(shù)量設(shè)置謂詞向量數(shù)組的向量寬度,本實(shí)施例中采用8位的byte類型數(shù)組作為謂詞向量數(shù)組。并發(fā)查詢組中的查詢分別在各個(gè)維表(維表I 維表4)上執(zhí)行謂詞操作,在每個(gè)維表上將每條記錄上的謂詞執(zhí)行結(jié)果記錄在第i位上,與查詢?nèi)蝿?wù)編號(hào)對(duì)應(yīng)。如果查詢?cè)谀硞€(gè)維表上沒有謂詞操作則將該維表所對(duì)應(yīng)的謂詞向量數(shù)組中各向量單元的該位都標(biāo)記為I。(4)謂詞向量數(shù)組星型連接位圖過濾對(duì)于順序掃描的每一條事實(shí)表記錄,根據(jù)外鍵值直接定位到相應(yīng)維表的謂詞向量數(shù)組的指定單元,然后將各維表謂詞向量數(shù)組中指定單元的數(shù)據(jù)進(jìn)行位運(yùn)算,獲得全局并發(fā)查詢連接過濾結(jié)果。在圖2所示的實(shí)施例中,順序掃描事實(shí)表。對(duì)于當(dāng)前記錄,如圖2中所示的[3,4,2,5,7. 8],根據(jù)四個(gè)外鍵屬性值3,4,2,5定位四個(gè)維表所對(duì)應(yīng)的謂詞向量數(shù)組(byte數(shù)組)的第3,4,2,5個(gè)向量單元。將四個(gè)向量的byte數(shù)據(jù)進(jìn)行位運(yùn)算中的AND(與)操作(或SQL中定義的其他謂詞操作),得到全局查詢結(jié)果向量
      。經(jīng)解析為查詢Q3與查詢Q 7滿足當(dāng)前記錄上的連接位圖過濾,調(diào)用Q3與Q7的查詢處理線程完成HASH分組的聚集計(jì)算。 (5)并行HASH聚集計(jì)算根據(jù)全局并發(fā)查詢連接過濾結(jié)果中位串中I的位置調(diào)用對(duì)應(yīng)查詢的HASH聚集處理線程,對(duì)當(dāng)前事實(shí)表記錄按實(shí)時(shí)抽取的維表分組屬性值進(jìn)行并行HASH聚集計(jì)算。并行HASH聚集計(jì)算有兩種方式I)為每一個(gè)查詢分配一個(gè)HASH聚集處理線程,在該線程內(nèi)創(chuàng)建HASH聚集表。每個(gè)線程獨(dú)立維護(hù)HASH聚集表,用于獨(dú)立完成HASH聚集計(jì)算。多個(gè)HASH聚集處理線程共享多核處理器的處理核心,由操作系統(tǒng)為各HASH聚集處理線程動(dòng)態(tài)分配處理核心資源,如圖2下部所示。在掃描每一條事實(shí)表記錄后,根據(jù)全局并發(fā)查詢連接過濾結(jié)果位串中為I的位置來動(dòng)態(tài)調(diào)用對(duì)應(yīng)的HASH聚集處理線程。上述方式在每一條事實(shí)表記錄掃描處理時(shí)需要調(diào)用不同的處理線程,會(huì)產(chǎn)生較多的線程切換操作。2)為每一個(gè)并發(fā)查詢組設(shè)置統(tǒng)一的HASH聚集處理接口,在統(tǒng)一的并發(fā)量查詢處理線程內(nèi)為每一個(gè)查詢?cè)O(shè)置HASH聚集表,統(tǒng)一處理HASH聚集計(jì)算。在圖2所示的實(shí)施例中,在當(dāng)前查詢組的查詢處理線程內(nèi)為8個(gè)查詢創(chuàng)建8個(gè)HASH聚集表,在查詢處理線程內(nèi)按連接位圖過濾結(jié)果位串中I的位置將事實(shí)表記錄所產(chǎn)生的聚集計(jì)算結(jié)果送入指定的HASH聚集表中進(jìn)行聚集計(jì)算。 上述方式將整個(gè)查詢組的處理整合為一個(gè)串行處理線程,在系統(tǒng)并發(fā)查詢負(fù)載強(qiáng)度大時(shí)可以在系統(tǒng)中配置多個(gè)處理線程來支持更大粒度的并發(fā)查詢處理。參見圖3所示,在基于共享磁盤事實(shí)表循環(huán)掃描的情況下,由于事實(shí)表數(shù)據(jù)塊緩存在內(nèi)存(對(duì)應(yīng)內(nèi)存中的維表Dl、D2、D3等)中,假設(shè)I/O延遲為T,對(duì)內(nèi)存中緩存的事實(shí)表記錄掃描時(shí)使用本發(fā)明所述方法進(jìn)行并發(fā)OLAP查詢處理的時(shí)間為t。當(dāng)T > t時(shí),可以增加并發(fā)查詢?nèi)蝿?wù),以使在一 個(gè)事實(shí)表I/O延遲內(nèi)處理盡可能多的OLAP查詢?nèi)蝿?wù),達(dá)到CPU性能與I/O性能的平衡。當(dāng)T = t時(shí)達(dá)到平衡的代價(jià)匹配,此時(shí)I/O訪問不需要為并發(fā)線程(如圖3中的線程-O、線程-I、線程-2、線程-3等)同步而等待,I/O利用率最高,磁盤表現(xiàn)為連續(xù)的順序訪問。在實(shí)踐中,磁盤I/O的延遲可以計(jì)算和測試出來,基于謂詞向量的OLAP查詢處理的執(zhí)行時(shí)間接近常量,可以通過查詢測試出具體的延遲,查詢組的謂詞向量數(shù)組并發(fā)查詢需要根據(jù)選擇率預(yù)估并行HASH聚集計(jì)算的CPU延遲,然后根據(jù)I/O延遲和CPU延遲估算出并發(fā)查詢的負(fù)載強(qiáng)度。當(dāng)事實(shí)表采用行存儲(chǔ)時(shí),I/O發(fā)生在單個(gè)數(shù)據(jù)文件上。當(dāng)事實(shí)表采用列存儲(chǔ)時(shí),I/0緩存為相關(guān)列的緩存數(shù)據(jù)塊,列數(shù)據(jù)的緩存需要根據(jù)列數(shù)據(jù)存儲(chǔ)方式的不同而采用不同的策略。當(dāng)列數(shù)據(jù)的數(shù)據(jù)寬度不同、壓縮效率不同時(shí),每一個(gè)列數(shù)據(jù)塊內(nèi)的記錄數(shù)量不相同,因此在數(shù)據(jù)塊緩存中需要以相同的行數(shù)為粒度進(jìn)行緩存,例如一次性讀入4K行數(shù)據(jù)對(duì)應(yīng)的各列塊,每一列的塊數(shù)可能不同,但各列的行記錄數(shù)量相同,因此將這些不同數(shù)量的列塊作為I/O訪問和緩存的單位,供并發(fā)查詢處理線程共享訪問。與現(xiàn)有技術(shù)相比較,本發(fā)明在數(shù)據(jù)庫管理系統(tǒng)中針對(duì)I/O性能和并行OLAP處理性能實(shí)現(xiàn)了并發(fā)查詢處理優(yōu)化技術(shù),支持面向I/O性能來優(yōu)化設(shè)置并發(fā)OLAP處理負(fù)載,從而提高了面向多樣化OLAP查詢的可預(yù)期處理性能,實(shí)現(xiàn)了基于謂詞向量數(shù)組的并發(fā)查詢星型連接位圖過濾處理。以上對(duì)本發(fā)明所提供的面向并發(fā)OLAP的數(shù)據(jù)庫查詢處理方法進(jìn)行了詳細(xì)的說明。對(duì)本領(lǐng)域的技術(shù)人員而言,在不背離本發(fā)明實(shí)質(zhì)精神的前提下對(duì)它所做的任何顯而易見的改動(dòng),都將構(gòu)成對(duì)本發(fā)明專利權(quán)的侵犯,將承擔(dān)相應(yīng)的法律責(zé)任。
      權(quán)利要求
      1.一種面向并發(fā)OLAP的數(shù)據(jù)庫查詢處理方法,在基于謂詞向量的內(nèi)存OLAP星型連接優(yōu)化基礎(chǔ)上進(jìn)行基于批量查詢謂詞向量位運(yùn)算的并發(fā)OLAP查詢處理,其特征在于 所述基于謂詞向量的內(nèi)存OLAP星型連接優(yōu)化包括如下步驟實(shí)現(xiàn)維表在內(nèi)存中的加載;將查詢中的謂詞操作結(jié)果向量化;通過查詢相關(guān)的多個(gè)維表上的謂詞向量上的位運(yùn)算來完成星型多表連接的位圖過濾操作,選擇滿足條件的事實(shí)表記錄;將維表主鍵映射為內(nèi)存列存儲(chǔ)維屬性的內(nèi)存偏移地址以實(shí)現(xiàn)對(duì)維表分組屬性值的直接訪問; 所述基于批量查詢謂詞向量位運(yùn)算的并發(fā)OLAP查詢處理包括如下步驟在指定的時(shí)間窗口內(nèi)將并發(fā)查詢分組,以批處理方式執(zhí)行查詢;采用多位謂詞向量存儲(chǔ)并發(fā)查詢組的謂詞操作結(jié)果,其中謂詞向量每一個(gè)數(shù)據(jù)項(xiàng)的每一位對(duì)應(yīng)指定的查詢謂詞操作結(jié)果標(biāo)識(shí)位,在執(zhí)行星型連接位圖過濾操作時(shí)以多位謂詞向量為單位執(zhí)行位操作,操作結(jié)果中I的位置表示滿足全部維表中謂詞條件的查詢編號(hào),調(diào)用謂詞向量結(jié)果位中I對(duì)應(yīng)的HASH聚集處理線程完成當(dāng)前事實(shí)表記錄上的迭代聚集計(jì)算。
      2.如權(quán)利要求I所述的面向并發(fā)OLAP的數(shù)據(jù)庫查詢處理方法,其特征在于 在內(nèi)存容量不夠的情況下,按如下優(yōu)先級(jí)進(jìn)行維表內(nèi)存化分組屬性一謂詞操作屬性—全部維屬性。
      3.如權(quán)利要求2所述的面向并發(fā)OLAP的數(shù)據(jù)庫查詢處理方法,其特征在于 所述分組屬性和所述謂詞操作屬性在查詢處理時(shí)通過增量的方式加載,并在內(nèi)存維屬性管理中按LRU策略淘汰訪問頻率低的維屬性列以容納新的維屬性列。
      4.如權(quán)利要求I所述的面向并發(fā)OLAP的數(shù)據(jù)庫查詢處理方法,其特征在于 維表被加載到內(nèi)存后轉(zhuǎn)換為內(nèi)存維屬性數(shù)組,數(shù)組下標(biāo)與維表主鍵值一一對(duì)應(yīng),事實(shí)表的外鍵被直接映射為維屬性列的下標(biāo); 每個(gè)維表預(yù)設(shè)一個(gè)謂詞向量,每個(gè)查詢?cè)趫?zhí)行謂詞操作時(shí)更新謂詞向量內(nèi)容,用I和0標(biāo)識(shí)每條維表記錄對(duì)當(dāng)前查詢謂詞的滿足狀態(tài)。
      5.如權(quán)利要求4所述的面向并發(fā)OLAP的數(shù)據(jù)庫查詢處理方法,其特征在于 將事實(shí)表的外鍵映射為謂詞向量位圖中指定的位,然后將多個(gè)謂詞向量的位數(shù)據(jù)進(jìn)行位運(yùn)算,完成多個(gè)維表上星型連接結(jié)果的過濾判斷。
      6.如權(quán)利要求I所述的面向并發(fā)OLAP的數(shù)據(jù)庫查詢處理方法,其特征在于 按照并發(fā)查詢?nèi)蝿?wù)的數(shù)量預(yù)先設(shè)置多位謂詞向量,所述謂詞向量中位的位置代表并發(fā)查詢中的查詢號(hào),查詢組中的查詢完成謂詞操作后,將謂詞操作結(jié)果記錄于謂詞向量數(shù)組中每一個(gè)多位向量單元中與查詢號(hào)相對(duì)應(yīng)的位置。
      7.如權(quán)利要求I所述的面向并發(fā)OLAP的數(shù)據(jù)庫查詢處理方法,其特征在于 對(duì)于順序掃描的每一條事實(shí)表記錄,根據(jù)外鍵值直接定位到相應(yīng)維表的謂詞向量數(shù)組的指定單元,然后將各維表謂詞向量數(shù)組中指定單元的數(shù)據(jù)進(jìn)行位運(yùn)算,獲得全局并發(fā)查詢連接過濾結(jié)果。
      8.如權(quán)利要求7所述的面向并發(fā)OLAP的數(shù)據(jù)庫查詢處理方法,其特征在于 根據(jù)所述全局并發(fā)查詢連接過濾結(jié)果中位串中I的位置調(diào)用對(duì)應(yīng)查詢的HASH聚集處理線程,對(duì)當(dāng)前事實(shí)表記錄按實(shí)時(shí)抽取的維表分組屬性值進(jìn)行并行HASH聚集計(jì)算。
      9.如權(quán)利要求8所述的面向并發(fā)OLAP的數(shù)據(jù)庫查詢處理方法,其特征在于 在所述并行HASH聚集計(jì)算中,為每一個(gè)查詢分配一個(gè)HASH聚集處理線程,在該線程內(nèi)創(chuàng)建HASH聚集表;多個(gè)HASH聚集處理線程共享多核處理器的處理核心,由操作系統(tǒng)為各HASH聚集處理線程動(dòng)態(tài)分配處理核心資源。
      10.如權(quán)利要求8所述的面向并發(fā)OLAP的數(shù)據(jù)庫查詢處理方法,其特征在于在所述并行HASH聚集計(jì)算中,為每一個(gè)并發(fā)查詢組設(shè)置統(tǒng)一的HASH聚集處理接口,在統(tǒng)一的并發(fā)量查詢處理線程內(nèi)為每一個(gè)查詢?cè)O(shè)置HASH聚集表,統(tǒng)一處理HASH聚集計(jì)算。
      全文摘要
      本發(fā)明公開了一種面向并發(fā)OLAP的數(shù)據(jù)庫查詢處理方法,在基于謂詞向量的內(nèi)存OLAP星型連接優(yōu)化基礎(chǔ)上進(jìn)行基于批量查詢謂詞向量位運(yùn)算的并發(fā)OLAP查詢處理。本發(fā)明在數(shù)據(jù)庫管理系統(tǒng)中針對(duì)I/O性能和并行OLAP處理性能實(shí)現(xiàn)了并發(fā)查詢處理優(yōu)化技術(shù),支持面向I/O性能來優(yōu)化設(shè)置并發(fā)OLAP處理負(fù)載,從而提高了面向多樣化OLAP查詢的可預(yù)期處理性能,實(shí)現(xiàn)了基于謂詞向量數(shù)組的并發(fā)查詢星型連接位圖過濾處理。
      文檔編號(hào)G06F17/30GK102663114SQ20121011366
      公開日2012年9月12日 申請(qǐng)日期2012年4月17日 優(yōu)先權(quán)日2012年4月17日
      發(fā)明者張延松, 王珊 申請(qǐng)人:中國人民大學(xué)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1