專利名稱:基于行指針的數(shù)據(jù)庫垂直分區(qū)存儲方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)庫存儲方法,尤其涉及一種基于行指針的數(shù)據(jù)庫垂直分區(qū)存儲方法,屬于數(shù)據(jù)庫存儲技術(shù)領(lǐng)域。
背景技術(shù):
隨著數(shù)據(jù)庫應(yīng)用規(guī)模的擴(kuò)展,需要管理的數(shù)據(jù)規(guī)模也越來越大,普通的數(shù)據(jù)庫查詢優(yōu)化機(jī)制在某些情況下已不能滿足性能要求。利用數(shù)據(jù)庫分區(qū)技術(shù),可以有效減少數(shù)據(jù)吞吐(I/O)量,提升系統(tǒng)查詢性能。
數(shù)據(jù)庫分區(qū)是一種物理數(shù)據(jù)庫設(shè)計(jì)技術(shù),其主要目的是為了在特定的SQL操作中減少數(shù)據(jù)吞吐的總量以縮減響應(yīng)時(shí)間。在數(shù)據(jù)庫分區(qū)技術(shù)中,對于一個(gè)大的數(shù)據(jù)表,既可以選擇進(jìn)行水平分區(qū),也可以選擇進(jìn)行垂直分區(qū)。其中,水平分區(qū)在主流的數(shù)據(jù)庫產(chǎn)品中都得到了實(shí)現(xiàn),垂直分區(qū)一般要靠數(shù)據(jù)庫設(shè)計(jì)人員自行實(shí)現(xiàn)。
垂直分區(qū)通過對表的垂直劃分來減少目標(biāo)表的寬度,使某些特定的列被劃分到特定的分區(qū),每個(gè)分區(qū)都包含了其中的列所對應(yīng)的行。使用垂直分區(qū)主要利用了數(shù)據(jù)庫應(yīng)用對數(shù)據(jù)表中字段訪問的如下特性
(1)字段訪問頻率的不均勻性即某些字段訪問特別頻繁,其他字段則訪問的較少。
(2)應(yīng)用對字段訪問的聚集性即數(shù)據(jù)庫應(yīng)用中的查詢傾向于一起訪問某些字段,如a、b、c三列總是一起訪問;d、e兩列總是一起訪問。
(3)字段訪問順序的依賴性即數(shù)據(jù)庫應(yīng)用中的查詢按照某個(gè)特定的順序訪問字段,例如訪問d、e字段前總是先訪問a、b、c字段。
在數(shù)據(jù)庫應(yīng)用對數(shù)據(jù)表的訪問滿足以上特性之一時(shí),使用垂直分區(qū)可以使訪問/ 修改這些列的查詢不再需要訪問/修改其他無關(guān)列,從而減少數(shù)據(jù)吞吐(I/O)量。
目前,主流的垂直分區(qū)技術(shù)均是基于行拆分的原則,即根據(jù)分區(qū)列將一行元組拆成多個(gè)獨(dú)立的元組存儲在不同的子表中。對于僅需要訪問某個(gè)子表的查詢,這種存儲方式能夠有效降低數(shù)據(jù)吞吐(I/O)量,但對于需要訪問跨多個(gè)子表的列時(shí),由于涉及到多個(gè)子表的連接,導(dǎo)致分區(qū)比較大時(shí)嚴(yán)重影響數(shù)據(jù)庫的性能。發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題在于提供一種基于行指針的數(shù)據(jù)庫垂直分區(qū)存儲方法。該存儲方法可以實(shí)現(xiàn)提高數(shù)據(jù)表的命中率,提高數(shù)據(jù)庫緩存的利用率,降低IO訪問。
為實(shí)現(xiàn)上述的發(fā)明目的,本發(fā)明采用下述的技術(shù)方案
一種基于行指針的數(shù)據(jù)庫垂直分區(qū)存儲方法,將數(shù)據(jù)庫中的數(shù)據(jù)表被分為若干個(gè)分區(qū),其中最先訪問的第一個(gè)分區(qū)為主分區(qū),其特征在于所述主分區(qū)內(nèi)記錄有后面一個(gè)或多個(gè)分區(qū)的行指針。
較優(yōu)地,所述主分區(qū)內(nèi)記錄有后面一個(gè)分區(qū)的行指針,且除最后一個(gè)分區(qū)之外,其他分區(qū)均記錄有下一個(gè)分區(qū)的行指針。
較優(yōu)地,所述主分區(qū)內(nèi)記錄有后面所有分區(qū)的行指針。
較優(yōu)地,所述行指針指向所述分區(qū)中相應(yīng)的分區(qū)元組。
較優(yōu)地,所述主分區(qū)的每一個(gè)元組包含有下一個(gè)分區(qū)的與所述主分區(qū)的所述元組相對應(yīng)的元組的行指針。
較優(yōu)地,所述主分區(qū)的每一個(gè)元組包含有所有分區(qū)的與所述主分區(qū)的所述元組相對應(yīng)的元組的行指針。
較優(yōu)地,所述主分區(qū)包含頻繁訪問/更新的列,最后一個(gè)分區(qū)包含不頻繁訪問或通過索引即可訪問的列。
較優(yōu)地,最后一個(gè)分區(qū)包含不需要訪問的索引列。
較優(yōu)地,所述主分區(qū)包含頻繁訪問/更新的列,后面所有分區(qū)分別包含訪問頻度差異性不大的不同列。
與現(xiàn)有技術(shù)相比較,本發(fā)明中涉及的垂直分區(qū)技術(shù)更加靈活。通過兩種基于行指針的垂直分區(qū)表的存儲方式,實(shí)現(xiàn)了在多數(shù)情況僅需訪問主分區(qū),部分情況下訪問主分區(qū)就能夠直接跳到其他分區(qū)的元組,僅需要訪問特定的分區(qū),而跳過其它的不必要分區(qū)的訪問,有效提高了跨分區(qū)訪問時(shí)的效率。
下面結(jié)合附圖和具體實(shí)施方式
對本發(fā)明作進(jìn)一步的詳細(xì)說明。
圖1是鏈型元組存儲結(jié)構(gòu)的示意圖2是星型元組存儲結(jié)構(gòu)的示意圖3是鏈型垂直分區(qū)的存儲結(jié)構(gòu)示意圖4是星型垂直分區(qū)的存儲結(jié)構(gòu)示意圖。
具體實(shí)施方式
在數(shù)據(jù)庫技術(shù)中,將數(shù)據(jù)表中的行作為元組,列作為字段。一個(gè)數(shù)據(jù)表由行(元組)和列(字段)構(gòu)成,組成一個(gè)二維關(guān)系表。若干個(gè)數(shù)據(jù)表、視圖及相關(guān)的文件等組成一個(gè)統(tǒng)一的相關(guān)聯(lián)的數(shù)據(jù)庫系統(tǒng)。為了解決基于行拆分的垂直分區(qū)技術(shù)帶來的跨表操作需要進(jìn)行表連接的問題,本發(fā)明在子元組間通過指向存儲磁盤存儲位置的指針進(jìn)行順次連接或一對多連接等多種方式的連接,使得在訪問數(shù)據(jù)表的不同列時(shí),僅需要訪問特定的分區(qū),而跳過其它的不必要分區(qū)的訪問,從而節(jié)省了數(shù)據(jù)吞吐(IO)量。在數(shù)據(jù)庫應(yīng)用中,根據(jù)該應(yīng)用對數(shù)據(jù)表的數(shù)據(jù)訪問特點(diǎn),靈活地設(shè)計(jì)基于行指針的垂直分區(qū)表結(jié)構(gòu)及各分區(qū)元組間的連接方式,從而提高數(shù)據(jù)庫應(yīng)用過程中對數(shù)據(jù)庫緩存的利用率,達(dá)到降低IO訪問的效果。
為此,本發(fā)明中使用了兩種元組存儲結(jié)構(gòu)一對一的鏈型(chain)元組存儲結(jié)構(gòu)和一對多的星型(star)元組存儲結(jié)構(gòu)。如圖1所示,在一對一的鏈型元組存儲結(jié)構(gòu)中,垂直分區(qū)的元組通過行指針順次連接在一起,訪問后面的分區(qū)需要通過訪問前面分區(qū)里存儲的行指針進(jìn)行。如圖2所示,在一對多的星型元組存儲結(jié)構(gòu)中,垂直分區(qū)的首個(gè)元組存儲所有其它子元組的行指針,訪問后面的元組僅需要通過訪問首個(gè)元組相應(yīng)的行指針進(jìn)行。
基于上述的兩種元組存儲結(jié)構(gòu),本發(fā)明可以實(shí)現(xiàn)兩種垂直分區(qū)存儲方式鏈型垂直分區(qū)存儲方式和星型垂直分區(qū)存儲方式。這兩種垂直分區(qū)存儲方式均要求首先訪問數(shù)據(jù)表的主分區(qū),并且主分區(qū)內(nèi)記錄有后面一個(gè)(鏈型垂直分區(qū)存儲方式)或多個(gè)(星型垂直分區(qū)存儲方式)分區(qū)的行指針。在需要訪問多個(gè)垂直分區(qū)時(shí),根據(jù)垂直分區(qū)之間的索引關(guān)系,通過行指針直接定位到相應(yīng)的分區(qū)元組。
如圖3所示,鏈型垂直分區(qū)存儲方式是將一個(gè)數(shù)據(jù)表分為若干個(gè)分區(qū),其中第一個(gè)分區(qū)為主分區(qū)。除最后一個(gè)分區(qū)外的每個(gè)分區(qū)均需要記錄下一個(gè)分區(qū)的行指針。主分區(qū)的每一個(gè)元組包含有下一個(gè)分區(qū)的與主分區(qū)的元組相對應(yīng)的元組的行指針。在圖3中,分區(qū)1 (主分區(qū))的第一元組(位于圖3中分區(qū)1中的上方的元組)中包含有,與分區(qū)2中第一元組相對應(yīng)的行指針。類似的,分區(qū)1中的第二元組(位于圖3中分區(qū)1中的中部的元組)中包含有與分區(qū)2中第二元組相對應(yīng)的行指針。分區(qū)1中的第三元組(位于圖3中分區(qū)1中的下方的元組)中包含有與分區(qū)2中第三元組相對應(yīng)的行指針。同樣,分區(qū)2的第一元組中包含有與分區(qū)3中第一元組相對應(yīng)的行指針;第二元組中包含有與分區(qū)3中第二元組相對應(yīng)的行指針;第三元組中包含有與分區(qū)3中第三元組相對應(yīng)的行指針。
在這種存儲方式下,當(dāng)訪問主分區(qū)的列時(shí),同拆分列的垂直分區(qū)相同,因此僅需要訪問主分區(qū)即可。當(dāng)訪問分區(qū)的列時(shí),需要首先訪問主分區(qū),然后根據(jù)行指針依次往后找到所需的分區(qū)元組。當(dāng)分區(qū)比較靠后(第三個(gè)分區(qū)或第三個(gè)分區(qū)之后)時(shí),這種存儲方式需要多次訪問前面分區(qū)的訪問接口,有些得不償失。因此,這種存儲方式適用于數(shù)據(jù)庫應(yīng)用的列訪問階段性差異比較大的情況,這時(shí)可以將頻繁訪問的列放到第一個(gè)分區(qū)(即主分區(qū)),將次頻繁訪問的列放到第二個(gè)分區(qū),將不頻繁訪問、根本不會訪問或通過索引即可訪問(需要確保應(yīng)用使用索引掃描)的列,即訪問頻度差異性不大的多個(gè)列,放到后面的分區(qū)中。
如圖4所示,星型垂直分區(qū)存儲方式是將一個(gè)數(shù)據(jù)表分為若干個(gè)分區(qū),其中第一個(gè)分區(qū)為主分區(qū),需要記錄后面所有分區(qū)的行指針,其它分區(qū)則不需要記錄行指針的信息。 主分區(qū)的每一個(gè)元組包含有,所有分區(qū)的與主分區(qū)的元組相對應(yīng)的元組的行指針。具體而言,在圖4中分區(qū)1(主分區(qū))中第一元組(位于圖4的分區(qū)1中的上方的元組),依次包含有后面所有分區(qū),分區(qū)2、分區(qū)3直到分區(qū)η的第一元組的行指針。分區(qū)1中第二元組依次包含有后面所有分區(qū)的第二元組的行指針。分區(qū)1中的第η元組依次包含有后面所有分區(qū)的第η元組的行指針。
在這種存儲方式下,主分區(qū)存儲的內(nèi)容相比鏈型垂直分區(qū)存儲方式有所增多,需要存儲多個(gè)行指針的信息。但與鏈型垂直分區(qū)存儲方式相比,星型垂直分區(qū)存儲方式對于后面分區(qū)的訪問,僅僅需要多一次主分區(qū)訪問的數(shù)據(jù)讀寫過程。因此,這種存儲方式適用于某些列訪問較頻繁,其余列訪問相對較少,但列訪問模式又比較分散的情況,例如有時(shí)訪問這幾列、有時(shí)訪問那幾列的情況。換言之,主分區(qū)包含頻繁訪問/更新的列,后面所有分區(qū)分別包含訪問頻度差異性不大的不同列。
這兩種垂直分區(qū)存儲方式各自有其優(yōu)缺點(diǎn)。例如對于鏈型垂直分區(qū)存儲方式而言,當(dāng)訪問后面的分區(qū)時(shí),需要首先訪問前面的分區(qū),這樣對于后面分區(qū)的訪問可能造成多次數(shù)據(jù)讀寫過程。對于星型垂直分區(qū)存儲方式而言,訪問非主分區(qū)都需要發(fā)生一次訪問主分區(qū)的額外數(shù)據(jù)讀寫過程,但對于僅訪問主分區(qū)的列的情況,則不會引起訪問分區(qū)的數(shù)據(jù)讀寫過程。同時(shí),星型垂直分區(qū)存儲方式不需要為每個(gè)垂直分區(qū)子表均建立索引,僅需要對垂直分區(qū)的主分區(qū)表建立索引即可。特別地,索引列可以存放在后面的分區(qū)中,以減少主分區(qū)元組的大小。索引列的值可以直接通過索引元組字段獲得,而不需要訪問索引列所在內(nèi)存堆(heap)的分區(qū)。
鏈型垂直分區(qū)存儲方式和星型垂直分區(qū)存儲方式可以在同一個(gè)數(shù)據(jù)庫系統(tǒng)中并存。用戶可以根據(jù)鏈型垂直分區(qū)和星型垂直分區(qū)中數(shù)據(jù)表的不同存儲方式,結(jié)合數(shù)據(jù)庫應(yīng)用中對數(shù)據(jù)表的列的訪問特點(diǎn),決定每個(gè)數(shù)據(jù)表在數(shù)據(jù)庫中的最優(yōu)存儲方式,從而達(dá)到數(shù)據(jù)庫檢索時(shí)能夠節(jié)省數(shù)據(jù)吞吐(IO)量,同時(shí)避免表連接操作的效果。
下面,以TPCC(基準(zhǔn)測試)應(yīng)用中的(^customer表為例,具體闡述本發(fā)明的實(shí)施步驟及其效果
1.首先,判斷(^customer表是否需要進(jìn)行垂直分區(qū),以及進(jìn)行垂直分區(qū)所采用的具體存儲方式。經(jīng)過研究,確認(rèn)該表應(yīng)該進(jìn)行垂直分區(qū),具體理由如下
(1) c_customer表中的一個(gè)元組平均占543個(gè)字節(jié),c_data列即占404個(gè)字節(jié),且訪問頻率很小。
(2) c_customer表的列數(shù)很多,但訪問上比較有聚集性。
(3) c_customer表的訪問具有一定的規(guī)律性,列之間訪問頻率差異很大,少數(shù)列的訪問頻率達(dá)到80%以上
2.選擇進(jìn)行垂直分區(qū)所采用的具體存儲方式
由于少數(shù)列訪問頻率達(dá)到80%,故把這些列放到主分區(qū)后,要求主分區(qū)元組應(yīng)該盡量小。同時(shí)列訪問聚集性較高,但無法明確分成若干類,不適合星型垂直分區(qū)存儲方式, 應(yīng)該使用鏈型垂直分區(qū)存儲方式。
3.進(jìn)行具體分區(qū)的劃分
參照分區(qū)原則,可以確定如下的分區(qū)劃分方法
(l)c_data由于比較大,且訪問頻率小,比較獨(dú)立,最好單獨(dú)分一個(gè)分區(qū),且放到最后一個(gè)分區(qū)。
(2)對于訪問頻率達(dá)到80%的列c_delivery_cnt和c_balance,可以都放到第一個(gè)分區(qū),同時(shí)列(3_1&計(jì),(3_1(1訪問頻率較高,也可以放到第一個(gè)分區(qū)。
(3)其余各列相對訪問比較集中,但有一些列的訪問模式比較散(即不固定地被多個(gè)查詢訪問),可以統(tǒng)一放到第二個(gè)分區(qū)。
(4)由于索引的存在,c_W_ic^nc_d_id這兩個(gè)索引列從來不會被從內(nèi)存堆(heap) 上訪問到,且所占空間較小,可與c_data—同放到最后一個(gè)分區(qū)。
依照上面的分區(qū)劃分方法進(jìn)Sccustomer表的劃分后,可以計(jì)算出第一個(gè)分區(qū)的元組長度為40字節(jié),第二個(gè)分區(qū)的元組長度為1 個(gè)字節(jié),第三個(gè)分區(qū)的元組長度為408 個(gè)字節(jié)。
在數(shù)據(jù)庫應(yīng)用中,選定查詢計(jì)劃后會首先掃描獲得(^customer表的主分區(qū)元組。 對于大多數(shù)查詢來說,通過該主分區(qū)元組即可獲得需要操作的列,不需要訪問后面的分區(qū)。 對于部分查詢來說,需要讀取第二個(gè)分區(qū)的元組進(jìn)行操作。對于極少數(shù)的查詢,才需要訪問到C_data字段,需要讀取第三個(gè)分區(qū)。
在針對(^customer表的實(shí)際測試中,通過iostat磁盤工具觀察到每秒讀扇區(qū)數(shù)從50000降到了 35000,每秒寫扇區(qū)數(shù)從15000降到了 10000左右。觀察命中率時(shí),發(fā)現(xiàn) c_customer三個(gè)分區(qū)的命中率分別是0. 94,0. 73,0. 76,兩個(gè)索引的命中率分別是0. 99,0. 97,這說明所使用的鏈型垂直分區(qū)存儲方式解決了原先C_CUStomer表命中率過低的問題。
在使用本發(fā)明所提供的數(shù)據(jù)庫垂直分區(qū)存儲方法后,多個(gè)垂直分區(qū)子表對用戶來說是透明的。用戶使用順序掃描或索引掃描得到的均是主分區(qū)的元組,然后,根據(jù)查詢需要訪問的列來決定是否需要繼續(xù)掃描哪些元組。對于鏈型垂直分區(qū)存儲方式而言,訪問第η 個(gè)分區(qū)的元組需要訪問所有前面η-1個(gè)分區(qū)的元組,通過每個(gè)分區(qū)的行指針找到后面分區(qū)的元組,依此類推。對于星型垂直分區(qū)存儲方式而言,訪問第η個(gè)分區(qū)的元組僅需要通過主分區(qū)中存儲該分區(qū)元組的行指針即可直接定位。相應(yīng)地,更新列的過程如果僅涉及個(gè)別幾個(gè)分區(qū),也只需要在這幾個(gè)分區(qū)上進(jìn)行更新即可。
上述的技術(shù)解決方案提供了在數(shù)據(jù)庫應(yīng)用中節(jié)省IO操作、提高效率的一種有效途徑。用戶還可以依據(jù)上面提到的數(shù)據(jù)庫垂直分區(qū)存儲方法,根據(jù)數(shù)據(jù)庫應(yīng)用的具體要求來判定是否定義類似垂直分區(qū)的數(shù)據(jù)表來提升性能。具體來說,使用基于行指針的數(shù)據(jù)庫垂直分區(qū)需要滿足以下條件
1.數(shù)據(jù)表的列比較多,或個(gè)別字段的長度比較大,如果集中存儲會造成訪問比較隨機(jī);
2.數(shù)據(jù)庫應(yīng)用對數(shù)據(jù)表的訪問模式基本確定,即可以根據(jù)數(shù)據(jù)表的訪問的統(tǒng)計(jì)信息確定數(shù)據(jù)表中每個(gè)字段的訪問模式及頻率;
3.根據(jù)對數(shù)據(jù)表的訪問模式,可以推測出數(shù)據(jù)表的列的訪問存在比較大的差異性。
在進(jìn)行基于行指針的數(shù)據(jù)庫垂直分區(qū)劃分時(shí)需要遵循以下原則
1.查詢/更新語句訪問的頻度較高的列應(yīng)該盡可能放在前面的分區(qū)中;
2.對于列訪問頻度差異非常大的數(shù)據(jù)庫應(yīng)用,應(yīng)優(yōu)先考慮鏈型垂直分區(qū)存儲方式;對于列訪問頻度差異不大、但不同查詢訪問不同列的數(shù)據(jù)庫應(yīng)用,應(yīng)優(yōu)先考慮星型垂直分區(qū)存儲方式;
3.對于同一查詢中涉及的列,盡量集中存儲在同一個(gè)分區(qū)中;
4.對于更新的列,應(yīng)盡量存儲在同一個(gè)分區(qū)中,且盡量靠前;
5.如果數(shù)據(jù)庫應(yīng)用中使用索引掃描,則不需要從內(nèi)存堆(heap)中訪問索引列。對于不需要訪問的索引列,則可以放到最后一個(gè)分區(qū)。
6.劃分過程中應(yīng)盡量避免劃分過小的數(shù)據(jù)表,因?yàn)閯澐忠粋€(gè)數(shù)據(jù)表需要多出存儲行指針的空間。如果劃分的數(shù)據(jù)表中元組不超過行指針大小或基本持平,則無分區(qū)的必要。
以上對本發(fā)明所提供的基于行指針的數(shù)據(jù)庫垂直分區(qū)存儲方法進(jìn)行了詳細(xì)的說明。對本領(lǐng)域的技術(shù)人員而言,在不背離本發(fā)明實(shí)質(zhì)精神的前提下對它所做的任何顯而易見的改動(dòng),都將構(gòu)成對本發(fā)明專利權(quán)的侵犯,將承擔(dān)相應(yīng)的法律責(zé)任。
權(quán)利要求
1.一種基于行指針的數(shù)據(jù)庫垂直分區(qū)存儲方法,將數(shù)據(jù)庫中的數(shù)據(jù)表被分為若干個(gè)分區(qū),其中最先訪問的第一個(gè)分區(qū)為主分區(qū),其特征在于所述主分區(qū)內(nèi)記錄有后面一個(gè)或多個(gè)分區(qū)的行指針。
2.如權(quán)利要求1所述的基于行指針的數(shù)據(jù)庫垂直分區(qū)存儲方法,其特征在于所述主分區(qū)內(nèi)記錄有后面一個(gè)分區(qū)的行指針,且除最后一個(gè)分區(qū)之外,其他所述分區(qū)均記錄有下一個(gè)分區(qū)的行指針。
3.如權(quán)利要求1所述的基于行指針的數(shù)據(jù)庫垂直分區(qū)存儲方法,其特征在于 所述主分區(qū)內(nèi)記錄有后面所有分區(qū)的行指針。
4.如權(quán)利要求2或3所述的基于行指針的數(shù)據(jù)庫垂直分區(qū)存儲方法,其特征在于 所述行指針指向所述分區(qū)中相應(yīng)的分區(qū)元組。
5.如權(quán)利要求2所述的基于行指針的數(shù)據(jù)庫垂直分區(qū)存儲方法,其特征在于 所述主分區(qū)的每一個(gè)元組包含有下一個(gè)分區(qū)的與所述主分區(qū)的所述元組相對應(yīng)的元組的行指針。
6.如權(quán)利要求3所述的基于行指針的數(shù)據(jù)庫垂直分區(qū)存儲方法,其特征在于 所述主分區(qū)的每一個(gè)元組包含有所有分區(qū)的與所述主分區(qū)的所述元組相對應(yīng)的元組的行指針。
7.如權(quán)利要求2所述的基于行指針的數(shù)據(jù)庫垂直分區(qū)存儲方法,其特征在于所述主分區(qū)包含頻繁訪問/更新的列,最后一個(gè)分區(qū)包含不頻繁訪問或通過索引即可訪問的列。
8.如權(quán)利要求7所述的基于行指針的數(shù)據(jù)庫垂直分區(qū)存儲方法,其特征在于 最后一個(gè)分區(qū)包含不需要訪問的索引列。
9.如權(quán)利要求3所述的基于行指針的數(shù)據(jù)庫垂直分區(qū)存儲方法,其特征在于所述主分區(qū)包含頻繁訪問/更新的列,后面所有分區(qū)分別包含訪問頻度差異性不大的不同列。
全文摘要
本發(fā)明公開了一種基于行指針的數(shù)據(jù)庫垂直分區(qū)存儲方法。在該方法中,將數(shù)據(jù)庫中的數(shù)據(jù)表被分為若干個(gè)分區(qū),其中最先訪問的第一個(gè)分區(qū)為主分區(qū),在主分區(qū)內(nèi)記錄有后面一個(gè)或多個(gè)分區(qū)的行指針。與現(xiàn)有技術(shù)相比較,本發(fā)明通過兩種基于行指針的垂直分區(qū)表的存儲方式,實(shí)現(xiàn)了在多數(shù)情況僅需訪問主分區(qū),部分情況下訪問主分區(qū)就能夠直接跳到其他分區(qū)的元組,僅需要訪問特定的分區(qū),而跳過其它的不必要分區(qū)的訪問,有效提高了跨分區(qū)訪問時(shí)的效率。
文檔編號G06F17/30GK102521282SQ20111038222
公開日2012年6月27日 申請日期2011年11月25日 優(yōu)先權(quán)日2011年11月25日
發(fā)明者馮玉, 冷建全, 李祥凱, 李茂增, 楊尚, 王穎澤 申請人:北京人大金倉信息技術(shù)股份有限公司