浅谈ORACLE INDEX提高性能_PART2问题

电子说

1.3w人已加入

描述

  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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分