电子说
1.Bitmap index使用
DROP TABLE t;
dingjun123@ORADB》 SELECT COUNT(*),
COUNT(*) COUNT(DISTINCTOWNER)
76422 35
CREATE TABLE bitmap_test(ID NUMBER,status NUMBER);
CREATE BITMAP INDEX idx_bitmap_test ON bitmap_test(status);
INSERT INTO bitmap_test VALUES(1,0);
INSERT INTO bitmap_test VALUES(2,0);
INSERT INTO bitmap_test VALUES(3,0);
INSERT INTO bitmap_test VALUES(1,1);
INSERT INTO bitmap_test VALUES(2,1);
INSERT INTO bitmap_test VALUES(3,1);
COMMIT;
按照红色数字标识执行顺序:
SESSION1:
SESSION2:
出现enq: TX - row lock contention等待。
1)Bitmap index上如果DML操作,按照位图索引块级别加锁,锁定的行多,容易造成阻塞或死锁。
2)因此,虽然Bitmap index在一些统计运算、提升低选择性列运算性能上有优势,Bitmap index在OLTP中则是坚决杜绝使用的。只有在OLAP环境下,数据加载完毕后,基本处于只读状态,主要进行统计分析,才比较适合。
这个例子,在B*tree中则不会出现阻塞或死锁情况。
编辑:hfy
全部0条评论
快来发表一下你的评论吧 !