接PART1:http://blog.chinaunix.net/uid-7655508-id-5836298.html
1.Bitmap index使用
DROP TABLE t; |
1)在OLAP环境下,使用BITMAP索引比普通B*Tree有很大优势
2)BITMAP索引做COUNT、OR、AND、MINUS等运算,可以充分发挥其性能
3)从例子中可以看出BITMAP索引存储NULL值。
2.Bitmap index的缺点
下面来做个测试,数据准备如下:
CREATE TABLE bitmap_test(ID NUMBER,status NUMBER); |
按照红色数字标识执行顺序:
SESSION1:
SESSION2:
出现enq:TX - row lock contention等待。
1)Bitmap index上如果DML操作,按照位图索引块级别加锁,锁定的行多,容易造成阻塞或死锁。
2)因此,虽然Bitmapindex在一些统计运算、提升低选择性列运算性能上有优势,Bitmapindex在OLTP中则是坚决杜绝使用的。只有在OLAP环境下,数据加载完毕后,基本处于只读状态,主要进行统计分析,才比较适合。
这个例子,在B*tree中则不会出现阻塞或死锁情况。