DML和位图索引维护

以前只知道位图索引不适合于OLTP系统,因为其DML操作会一锁锁多行
今天看了下,还存在个DML和位图维护的关系

先看进行DML前的位图:
row#0[8004] flag: -----, lock: 0
col 0; len 2; (2):  c1 04
col 1; len 6; (6):  01 40 2f f4 00 00
col 2; len 6; (6):  01 40 2f f8 00 07
col 3; len 8; (8):  c8 7f c0 44 f8 90 02 7f

只有数据3,节点1个,位图覆盖的范围为01 40 2f f4 00 00到01 40 2f f8 00 07

-------------------------------------------------------------------------------------

一次更新所有数据
 UPDATE test1 SET ID=2;

row#0[7970] flag: -----, lock: 2
col 0; len 2; (2):  c1 03
col 1; len 6; (6):  01 40 2f f4 00 00
col 2; len 6; (6):  01 40 2f f8 00 07
col 3; len 8; (8):  c8 7f c0 44 f8 90 02 7f
row#1[8004] flag: ---D-, lock: 2
col 0; len 2; (2):  c1 04
col 1; len 6; (6):  01 40 2f f4 00 00
col 2; len 6; (6):  01 40 2f f8 00 07
col 3; len 8; (8):  c8 7f c0 44 f8 90 02 7f
row#2[7998] flag: ---D-, lock: 2
col 0; NULL
col 1; NULL
col 2; NULL
col 3; NULL

节点1个,位图覆盖范围还是所有块

-------------------------------------------------------------------------------------

那看看一次更新一条的结果
 BEGIN
 FOR i IN (SELECT * FROM test1 WHERE ID=2) LOOP
   UPDATE test1 SET ID=3 WHERE ID=2 AND ROWNUM=1;
   COMMIT;
 END LOOP;
 END;

row#0[7327] flag: ---D-, lock: 2
col 0; len 2; (2):  c1 03
col 1; len 6; (6):  01 40 2f f4 00 00
col 2; len 6; (6):  01 40 2f f8 00 07
col 3; len 3; (3):  c6 dc 02
row#1[7624] flag: -----, lock: 0
col 0; len 2; (2):  c1 04
col 1; len 6; (6):  01 40 2f f4 00 00
col 2; len 6; (6):  01 40 2f f4 00 07
col 3; len 2; (2):  c8 7f
row#2[7579] flag: -----, lock: 0
col 0; len 2; (2):  c1 04
col 1; len 6; (6):  01 40 2f f5 00 00
col 2; len 6; (6):  01 40 2f f5 00 07
col 3; len 1; (1):  00
row#3[7305] flag: ---D-, lock: 2
col 0; len 2; (2):  c1 04
col 1; len 6; (6):  01 40 2f f8 00 00
col 2; len 6; (6):  01 40 2f f8 00 07
col 3; len 2; (2):  c8 3f
row#4[7283] flag: -----, lock: 2
col 0; len 2; (2):  c1 04
col 1; len 6; (6):  01 40 2f f8 00 00
col 2; len 6; (6):  01 40 2f f8 00 07
col 3; len 2; (2):  c8 7f

可以看到现在有3个节点了,每个节点的位图覆盖范围无法超过其所在的数据块。
另,位图覆盖范围无法超过其所在的数据块,不受事务提交的影响。

这样可能造成更多的存储空间需要,以及查询时,访问更多的位图块。至于这种情况下,各个位图合并的开销有多大,暂时还不知道

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8242091/viewspace-621829/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8242091/viewspace-621829/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值