以前只知道位图索引不适合于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/