在数据仓库系统中,最为广泛使用的索引类型是BITMAP索引。和BTREE索引相比,BITMAP索引更加适合数据仓库环境。
在数据仓库系统中,BITMAP系统具有以下优势:
减少大级别特别查询的响应时间;和其他类型的索引相比,减少了对存储空间占用;即使在CPU和内存资源相对较少的环境下,仍可以大幅度地提升性能;使用并行DML或LOAD时,BITMAP索引维护具有很高的效率。
BITMAP索引适用于集势(选择性)较低的列,也就是说,具有较多重复值的列。一般来说,degree of cardinality应小于1%。计算degree of cardinality的方法:
select count(distict column_name)/count(*) from table_name;
BITMAP索引的一些特点:BITMAP索引包括NULL值;只有CBO模式,才会使用BITMAP索引;分区表的BITMAP索引只能是LOCAL的。
BITMAP连接索引在建立索引时,把两张表通过主外键连接起来,在执行查询时,就可以直接访问索引从而避免表连接。和具有类似功能的物化视图相比,BITMAP连接索引占用的空间要少得多。
另外:文档中关于BITMAP索引部分的例子至少错了两个地方,尤其是后一个关于BITMAP连接索引的例子,例子和文字的描述不一致,如果以前对这部分不是很了解,很容易别误导。
BTREE索引在数据仓库中的应用要少一些。主要用在唯一或接近唯一的列上。
对于分区表,LOCAL索引比GLOBAL索引更适合数据仓库环境,GLOBAL索引只创建在LOCAL索引无法满足条件时。
Ref:
http://blog.itpub.net/post/468/10794 1>. bitmap 索引是分段存储的,也就是说很多条记录可能是分做了N段来存储,也就是有N个begin/end ,基本来说应该按照 extent 来分,若一个extent 很大是否会分,没测试当新的记录 insert 而使用以前未曾使用过的物理地址的时候,会产生一个bitmap 段来存储,就算只有一条记录.
2>. 当删除一条记录的时候,在bitmap 索引上做了一个delete 的标记并用一新的记录来标记了,下面请看具体的演示
3>. 当 dml发生的时候,会lock住某个值的存储bit的那一rowid所在的记录,参考下面的 row 中 lock ,这样显然会影响并发
Ref:
http://blog.oracle.com.cn/viewthread_892.html
阅读(5062) | 评论(0) | 转发(0) |