Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3908514
  • 博文数量: 534
  • 博客积分: 10470
  • 博客等级: 上将
  • 技术积分: 4800
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 14:08
文章分类

全部博文(534)

文章存档

2021年(1)

2019年(1)

2017年(1)

2016年(2)

2013年(2)

2012年(10)

2011年(43)

2010年(10)

2009年(17)

2008年(121)

2007年(253)

2006年(73)

分类: Oracle

2007-02-27 13:07:46

   在数据仓库系统中,最为广泛使用的索引类型是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
阅读(4983) | 评论(0) | 转发(0) |
0

上一篇:回家的体会

下一篇:Oracle Operator操作

给主人留下些什么吧!~~