MDA/MDD/TDD/DDD/DDDDDDD
          posts - 536, comments - 111, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          bitmap位圖索引

          Posted on 2008-06-25 15:12 leekiang 閱讀(3817) 評(píng)論(1)  編輯  收藏 所屬分類: oracle
          1,Oracle數(shù)據(jù)庫的位圖索引(Bitmap Index)確實(shí)是針對(duì)那些數(shù)值稀疏(low-cardinality低基數(shù))的字段,但是還應(yīng)記住的一點(diǎn)是,它是針對(duì)那些值不經(jīng)常改變的字段的。在實(shí)際應(yīng)用中,如果某個(gè)字段的值需要頻繁更新,那么就不適合在它上面創(chuàng)建位圖索引。在位圖索引中,如果你更新或插入其中一條數(shù)值為N的記錄,那么相應(yīng)表中數(shù)值為N的記錄(可能成百上千條)全部被Oracle鎖定,這就意味著其它用戶不能同時(shí)更新這些數(shù)值為N的記錄,其它用戶必須要等第一個(gè)用戶提交后,才能獲得鎖,更新或插入數(shù)據(jù)。
          http://blog.ccidnet.com/blog-htm-do-showone-uid-4092-itemid-291252-type-blog.html

          在我們的系統(tǒng)里,不僅不是在一個(gè)column上創(chuàng)建bitmap index,而是在多個(gè)column上聯(lián)合起來創(chuàng)建bitmap index,從而可以想見,幾乎等同于每個(gè)bitmap index entry對(duì)應(yīng)的只有極少數(shù)的rowid,即只對(duì)應(yīng)極少數(shù)的row,而且每個(gè)bitmap都要?jiǎng)?chuàng)建一個(gè)或多個(gè)bitmap segment,相應(yīng)的,DML操作可能需要頻繁的lock很多rows,影響并發(fā)性(影響也需要修改同樣bitmap entry的用戶),同時(shí),由于pctfree等存儲(chǔ)參數(shù)影響index空間的分配及管理,和由于數(shù)據(jù)操作導(dǎo)致物理地址更改從而修改index entry,擴(kuò)展,鏈接bitmap index entry,頻繁修改導(dǎo)致的磁盤碎片,block分配鏈接等。這是空間增長(zhǎng)和系統(tǒng)性能下降的部分原因。

          bitmap主要用于數(shù)據(jù)倉庫,table有大量的數(shù)據(jù)并且列上基數(shù)很小(一般是column的distinct values占rows總數(shù)的1%以下,或重復(fù)出現(xiàn)超過100次以上,Oracle建議此時(shí)才可以把該column列為創(chuàng)建bitmap index的侯選字段),同時(shí),還由于數(shù)據(jù)倉庫上并行訪問的事務(wù)非常少。bitmap index并不適用于OLTP業(yè)務(wù),OLTP一般都是有大量的并發(fā)事務(wù)來修改同樣的數(shù)據(jù)。bitmap主要就是設(shè)計(jì)來為數(shù)據(jù)倉庫服務(wù)的,即應(yīng)用于低基數(shù)超 級(jí)大數(shù)據(jù)量查詢服務(wù),而且只用在where clause里包含and ,or,not,或equality queries(比如在and和or條件的查詢,在把bit轉(zhuǎn)換成rowid以前,就能很快的得到相應(yīng)的boolean操作)。
          http://bigboar.itpub.net/post/8411/225321

          2,位圖索引占用的空間很大.一個(gè)466萬行記錄的只有兩個(gè)字段的表,占用空間約 88M,在該兩個(gè)字段上建有一個(gè)位圖索引,這個(gè)位圖索引占用空間約168M
          http://bigboar.itpub.net/post/8411/225321

          查看各個(gè)表(包括索引)占用空間大小的sql:
          Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name

          http://space.itpub.net/193161/viewspace-50292
          http://www.ixdba.com/html/y2007/m05/102-bitmap-index-deadlock.html

          3,Oracle強(qiáng)烈建立,任何一個(gè)應(yīng)用程序的庫表至少需要?jiǎng)?chuàng)建兩個(gè)表空間,其中之一用于存儲(chǔ)表數(shù)據(jù),而另一個(gè)用于存儲(chǔ)表索引數(shù)據(jù)。因?yàn)槿绻麑⒈頂?shù)據(jù)和索引數(shù) 據(jù)放在一起,表數(shù)據(jù)的I/O操作和索引的I/O操作將產(chǎn)生影響系統(tǒng)性能的I/O競(jìng)爭(zhēng),降低系統(tǒng)的響應(yīng)效率。將表數(shù)據(jù)和索引數(shù)據(jù)存放在不同的表空間中(如一 個(gè)為APP_DATA,另一個(gè)為APP_IDX),并在物理層面將這兩個(gè)表空間的數(shù)據(jù)文件放在不同的物理磁盤上,就可以避免這種競(jìng)爭(zhēng)了。
          擁有獨(dú)立的表空間,就意味著可以獨(dú)立地為表數(shù)據(jù)和索引數(shù)據(jù)提供獨(dú)立的物理存儲(chǔ)參數(shù),而不會(huì)發(fā)生相互影響,畢竟表數(shù)據(jù)和索引數(shù)據(jù)擁有不同的特性,而這些特性又直接影響了物理存儲(chǔ)參數(shù)的設(shè)定。
          此外,表數(shù)據(jù)和索引數(shù)據(jù)獨(dú)立存儲(chǔ),還會(huì)帶來數(shù)據(jù)管理和維護(hù)上的方面。如你在遷移一個(gè)業(yè)務(wù)數(shù)據(jù)庫時(shí),為了降低數(shù)據(jù)大小,可以只遷出表數(shù)據(jù)的表空間,在目標(biāo)數(shù)據(jù)庫中通過重建索引的方式就可以生成索引數(shù)據(jù)了。
          http://blog.ccidnet.com/blog-htm-do-showone-uid-19759-itemid-341747-type-blog.html

          4,B-Tree索引即normal普通索引

          評(píng)論

          # re: bitmap位圖索引  回復(fù)  更多評(píng)論   

          2009-01-21 10:16 by del
          有用,謝謝。
          主站蜘蛛池模板: 西和县| 龙门县| 山丹县| 辽阳市| 安平县| 海原县| 公安县| 通渭县| 苍南县| 湘潭县| 满城县| 章丘市| 美姑县| 砀山县| 沙洋县| 炉霍县| 民勤县| 门源| 湟源县| 类乌齐县| 塔城市| 安多县| 长寿区| 柳州市| 忻州市| 盘山县| 崇州市| 兖州市| 海盐县| 南木林县| 荣成市| 景谷| 内江市| 辽中县| 富平县| 三明市| 蒲江县| 称多县| 高阳县| 木兰县| 纳雍县|