首页 > Linux操作系统 > Linux操作系统 > 物化视图上使用bitmap索引
还是同一个客户的系统,生产机是OLTP系统,肯定无法使用位图索引,但是对于查询机,上面不存在并行的DML操作,只有物化视图的刷新这个DML操作。
跟踪了下dbms_mview.refresh操作,发现其其实是一条数据一条数据更新的。我删了3条数据,在刷新时,执行了3次delete操作。
|
DELETE FROM "CTAIS2"."MV_TEST" SNAP$ WHERE "OBJECT_ID" = :1
call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.00 0.00 0 12 0 0 Execute 3 0.00 0.00 1 6 9 3 Fetch 0 0.00 0.00 0 0 0 0 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 4 0.00 0.00 1 18 9 3 |
这样,也不可能存在什么并行DML的操作等。觉得把物化视图的索引改成位图索引肯定没有问题,而且对大量的问题查询的使用更好的执行计划
测试了下,对刷新没什么问题
决定下次做优化的时候提出来,以改善性能。
如果有问题,大不了数据一天不能同步,晚上重建下,没太多危险。
但是需要注意,位图索引对CPU存在更多的开销,但是考虑到对SQL语句效率的改善,应该在可以接受的范围内。
物化视图的刷新是使用游标形式,一条一条的来干的。其实可以用CDC捕获变化,自己编写SQL来同步,应该效率更高,ODI自带的KM有一个就是这么实现的。当然,mview log也能实现同样的方法,dbms_mview有相应的存储过程
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8242091/viewspace-609539/ ,如需转载,请注明出处,否则将追究法律责任。