Oracle 的位圖索引
|
?????????
?Oracle的索引主要包含兩類:BTree和位圖索引。默認(rèn)情況下大多使用Btree索引,該索引就是通常所見(jiàn)?唯一索引、聚簇索引等等,Btree用在OLTP,加快查詢速度。位圖索引是Oracle的比較引人注目的地方,其主要用在OLAP(聯(lián)機(jī)數(shù)據(jù)分析)方面,也就是數(shù)據(jù)倉(cāng)庫(kù)方面用到,目的是在加快查詢速度是,節(jié)省存儲(chǔ)空間。通常情況下,索引都要耗費(fèi)比較大的存儲(chǔ)空間,位圖采用了壓縮技術(shù)實(shí)現(xiàn)磁盤(pán)空間縮減。Btree用在高基數(shù)(即列的數(shù)據(jù)相異度大),位圖用在低基數(shù)列。位圖索引的基本原理是在索引中使用位圖而不是列值。通常在事實(shí)表和維表的鍵之間有很低的集的勢(shì)(cardinality),使用位圖索引,存儲(chǔ)更為有效,與B*Tree索引比較起來(lái),只需要更少的存儲(chǔ)空間,這樣每次讀取可以讀到更多的記錄,而且與B*Tree索引相比,位圖索引將比較,連接和聚集都變成了位算術(shù)運(yùn)算,大大減少了運(yùn)行時(shí)間,從而得到性能上的極大的提升。
在Oracle中如何合理的使用位圖索引?以下的幾個(gè)事項(xiàng)應(yīng)該考慮。 ?? ?????????? *? 如果要使用位圖索引,初始化參數(shù)STAR_TRANSFORMATION_ENABLED應(yīng)該設(shè)置為 ? ????????? ??TRUE. ?????? ??? *?? 優(yōu)化模式應(yīng)該是CBO。對(duì)于數(shù)據(jù)倉(cāng)庫(kù)的環(huán)境中,總是應(yīng)該考慮使用CBO(COST-BASED? ? ? ?????????? OPTIMIZER)。 ????? ???? *?? 位圖索引應(yīng)該建立在每一個(gè)事實(shí)表的外鍵列上。(這只是一個(gè)一般的規(guī)則.) ?? ????? 此外,對(duì)于數(shù)據(jù)表中的cardinality如何客觀的確定也是一個(gè)問(wèn)題,一萬(wàn)條數(shù)據(jù)中只包含3個(gè)值的集和算是低的了,那么一億條記錄中包含3萬(wàn)條記錄算不算低的呢?對(duì)于這樣的情況,建議幾行一下數(shù)據(jù)的模擬測(cè)試,一般來(lái)說(shuō),在數(shù)據(jù)倉(cāng)庫(kù)環(huán)境中,位圖索引的性能要好于B*Tree索引。還要注意位圖索引不是為OLTP數(shù)據(jù)庫(kù)設(shè)計(jì)的,不應(yīng)該在OLTP數(shù)據(jù)庫(kù)中大量的使用它,尤其是對(duì)那些有更新操作的表?。?
|
posted on 2006-06-07 00:34
太極虎~宏 閱讀(368)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
數(shù)據(jù)庫(kù)