專利名稱:一種基于查詢?nèi)罩镜臄?shù)據(jù)庫統(tǒng)計數(shù)據(jù)直方圖生成方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種利用查詢?nèi)罩局兴牟樵兘Y(jié)果行數(shù)信息進(jìn)行數(shù)據(jù)庫直方圖 統(tǒng)計信息生成的方法。
背景技術(shù):
在數(shù)據(jù)庫系統(tǒng)中,如何有效地生成準(zhǔn)確的關(guān)于數(shù)據(jù)分布的統(tǒng)計信息是一個十分重 要的基礎(chǔ)問題。這些信息被查詢優(yōu)化器用來估計查詢計劃中相關(guān)算子的選擇度,估計其執(zhí) 行代價,并選擇最優(yōu)的執(zhí)行計劃。如果統(tǒng)計數(shù)據(jù)出現(xiàn)誤差,誤差會在查詢計劃中呈指數(shù)級擴(kuò) 散,導(dǎo)致實(shí)際執(zhí)行的查詢計劃的性能急劇降低。直方圖是最普遍的用來描述數(shù)據(jù)分布的手 段,在目前的商業(yè)數(shù)據(jù)庫中被廣泛采用。構(gòu)建直方圖需要對原始數(shù)據(jù)進(jìn)行掃描或者抽樣,對 數(shù)據(jù)排序并且形成合適的桶分區(qū)。對于大規(guī)模的數(shù)據(jù)庫來講,構(gòu)建和維護(hù)直方圖的代價卻 是非常高昂的,對于多維直方圖更是如此。在數(shù)據(jù)庫查詢?nèi)罩局杏涗浿總€查詢結(jié)果的行數(shù),利用這些信息可以推算數(shù)據(jù)分 布。在已有的利用查詢?nèi)罩具M(jìn)行直方圖生成的方法中,都是采用增量式更新的方式,也即逐 個采用查詢來修正直方圖,由于缺乏優(yōu)化目標(biāo)函數(shù)定義,導(dǎo)致所生成的直方圖的誤差比較 大,同時隨著查詢的逐次到來,需要頻繁調(diào)整直方圖(合并或分裂)。
發(fā)明內(nèi)容
本發(fā)明提出一種直方圖生成方法,該方法基于數(shù)據(jù)庫查詢?nèi)罩娟P(guān)于查詢結(jié)果行數(shù) 的信息,利用最大熵思想,推導(dǎo)出數(shù)據(jù)密度分布,并以直方圖形式表示出來。本發(fā)明方法的原理是對于一個查詢Q,假定其屬性形如< A < ,其結(jié)果行數(shù) 為RCnt,那么就可以知道在屬性A的[a1; a2]區(qū)間的數(shù)據(jù)分布密度是P = RCnt/( - )。 如果有兩個查詢Q1和Q2,其屬性分別為a1<A<a2,b1<A< b2,其結(jié)果行數(shù)分別為RCnt1, RCnt2,整個區(qū)間[^vbtl]總的行數(shù)為RCn、。各區(qū)間密度如圖6所示,得到如下約束條件Oo1-Ei1) X P !+(B^b1) Xp2 = RCnt1(b2-a2) Xp3+ (B^b1) Xp2 = RCnt2(ara0) Xp0+ (Vei1) Xp1+ (Ei2Hd1) Xp2+ (b0_b2) Xp0 = RCnt0現(xiàn)有的約束條件不足以準(zhǔn)確解出每個P的值,換言之,滿足上述條件的P值可 以有無窮個,只能推斷最可能出現(xiàn)的那種情況。按照最大熵的思想,就是在一切不確定中, 使得熵最大的狀態(tài)是最可能出現(xiàn)的,而越均勻則熵越大。為此,定義目標(biāo)函數(shù),使得在滿足 上述約束的情況下各個密度盡可能接近,也即使得下式最小Σ (Pi-P P2。利用最小二乘 法求解上式,得到每個區(qū)間的密度值,由于區(qū)間的數(shù)目非常多,合并密度差距過小的相鄰區(qū) 間,再給出最終區(qū)間密度的直方圖表示。本發(fā)明采用的技術(shù)方案如下一種基于查詢?nèi)罩镜臄?shù)據(jù)庫統(tǒng)計數(shù)據(jù)直方圖生成方法,包括以下步驟1)從數(shù)據(jù)庫查詢?nèi)罩局刑崛〔樵兗?,每個查詢對應(yīng)一個屬性,將屬性集的左右邊界值構(gòu)成一個數(shù)組;2)對數(shù)組進(jìn)行排序,生成相鄰點(diǎn)對構(gòu)成的基本區(qū)間;3)對不同屬性上的區(qū)間取笛卡爾積,結(jié)果稱之為一個立方體;4)根據(jù)每個查詢包含的結(jié)果行數(shù)與立方體的笛卡爾積,得到立方體的密度值;5)根據(jù)立方體的密度值生成直方圖。所述步驟4)判斷查詢和立方體的覆蓋關(guān)系,如果某一查詢包含對應(yīng)的立方體,即 查詢覆蓋立方體,將查詢覆蓋的立方體進(jìn)行合并。所述步驟4)令每個立方體Cj的密度為Pj,體積為Sj, 1≤j≤(2n+l) dO每個查詢Qi返回的元組數(shù)目為RCnti, 1 < i < n,滿足如下的約束條件
權(quán)利要求
1.一種基于查詢?nèi)罩镜臄?shù)據(jù)庫統(tǒng)計數(shù)據(jù)直方圖生成方法,包括以下步驟1)從數(shù)據(jù)庫查詢?nèi)罩局刑崛〔樵兗?,每個查詢對應(yīng)一個屬性,將屬性集的左右邊界 值構(gòu)成一個數(shù)組;2)對數(shù)組進(jìn)行排序,生成相鄰點(diǎn)對構(gòu)成的基本區(qū)間;3)對不同屬性上的區(qū)間取笛卡爾積,結(jié)果稱之為一個立方體;4)根據(jù)每個查詢包含的結(jié)果行數(shù)與立方體的笛卡爾積,得到立方體的密度值;5)根據(jù)立方體的密度值生成直方圖。
2.如權(quán)利要求1所述的方法,其特征在于,所述步驟4)判斷查詢和立方體的覆蓋關(guān)系, 如果某一查詢包含對應(yīng)的立方體,即查詢覆蓋立方體,將查詢覆蓋的立方體進(jìn)行合并。
3.如權(quán)利要求1所述的方法,其特征在于,所述步驟4)令每個立方體(^.的密度為Pj, 笛卡爾積為I,1彡j彡(2n+l)d,每個查詢A包含的結(jié)果行數(shù)為RCnti, 1彡i彡n,滿足如(2n+\)d下的約束條件
4.如權(quán)利要求3所述的方法,其特征在于,定義目標(biāo)函數(shù)F:
5.如權(quán)利要求4所述的方法,其特征在于,利用最小二乘法求解目標(biāo)函數(shù),得到每個立 方體的密度值。
6.如權(quán)利要求1所述的方法,其特征在于,所述步驟5)在得到立方體的密度值后,根據(jù) 立方體的密度值,描繪一個立方體柱,代表這個空間的分布密度,生成直方圖。
7.如權(quán)利要求1所述的方法,其特征在于,將相鄰立方體密度差最小的兩個進(jìn)行合并, 直到合并后的立方體個數(shù)滿足要求。
全文摘要
本發(fā)明提供一種基于查詢?nèi)罩镜臄?shù)據(jù)庫統(tǒng)計數(shù)據(jù)直方圖生成方法,包括以下步驟1)從數(shù)據(jù)庫查詢?nèi)罩局刑崛〔樵兗?,每個查詢對應(yīng)一個屬性,將屬性集的左右邊界值構(gòu)成一個數(shù)組;2)對數(shù)組進(jìn)行排序,生成相鄰點(diǎn)對構(gòu)成的基本區(qū)間;3)對不同屬性上的區(qū)間取笛卡爾積,結(jié)果稱之為一個立方體;4)根據(jù)每個查詢包含的結(jié)果行數(shù)與立方體的笛卡爾積,得到立方體的密度值;5)根據(jù)立方體的密度值生成直方圖。本發(fā)明的方法基于數(shù)據(jù)庫查詢?nèi)罩旧芍狈綀D,克服了傳統(tǒng)數(shù)據(jù)庫系統(tǒng)通過掃描原始數(shù)據(jù)生成直方圖的代價過高的問題,以及現(xiàn)有利用查詢?nèi)罩具M(jìn)行增量式直方圖生成方法的誤差過大的問題。
文檔編號G06F17/30GK102103638SQ201110034159
公開日2011年6月22日 申請日期2011年1月31日 優(yōu)先權(quán)日2010年2月1日
發(fā)明者盧陽, 汪罕, 王瀟, 陳立軍 申請人:北京大學(xué)