在数据仓库系统中,最为广泛使用的索引类型是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:
1>. bitmap 索引是分段存储的,也就是说很多条记录可能是分做了n段来存储,也就是有n个begin/end ,基本来说应该按照 extent 来分,若一个extent 很大是否会分,没测试当新的记录 insert 而使用以前未曾使用过的物理地址的时候,会产生一个bitmap 段来存储,就算只有一条记录.
2>. 当删除一条记录的时候,在bitmap 索引上做了一个delete 的标记并用一新的记录来标记了,下面请看具体的演示
3>. 当 dml发生的时候,会lock住某个值的存储bit的那一rowid所在的记录,参考下面的 row 中 lock ,这样显然会影响并发
ref:
阅读(5007) | 评论(0) | 转发(0) |