暂无图片
物化视图 刷新机制到底是delete还是truncate
我来答
分享
夏鹏
2023-02-27
物化视图 刷新机制到底是delete还是truncate

全量刷新机制到底是delete还是truncate?

1.有的说全量刷新其实是delete整个视图,然后基于sql查询再执行插入,再commit;

2.也有说完全刷新(COMPLETE)会删除表中所有的记录(如果是单表刷新,可能会采用TRUNCATE的方式)

我实际环境看到的是delete from table,

请问到底是oracle 内部dbms调用的是哪种方法,或者有哪个参数可以指定delete、drop 、TRUNCATE

dbms_mview.refresh和dbms_refresh.refresh有没有什么大的区别?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
Thomas

dbms_mview.refresh和dbms_refresh.refresh有没有什么大的区别?

dbms_mview.refresh用来刷新单个MV,  而dbms_refresh.refresh是刷新一组MV,你可以事先定义一个MV组,然后要刷新将它们一起刷了,个人感觉是保证MV之间的一致性。比如A和B两个MV都在一个组里,那么下午五点刷新这个组,两个MV都在同一时间点刷新了。

1.有的说全量刷新其实是delete整个视图,然后基于sql查询再执行插入,再commit;

2.也有说完全刷新(COMPLETE)会删除表中所有的记录(如果是单表刷新,可能会采用TRUNCATE的方式)

应该取决与MV是否做了如下设置,atomic_refresh属性默认为TRUE,这是为了运行 dbms_mview.refresh_all_mviews时保证各MV的一致性或刷新动作的原子性。如果atomic_refresh=true, 则刷新时是DELETE再INSERT,慢。而实际业务中,大部分情况,无须如此严谨,所以设置其为false: exec dbms_mview.refresh('MY_MV',atomic_refresh=>FALSE); 这样刷新时先TRUNCATE,再insert,快。

暂无图片 评论
暂无图片 有用 3
暂无图片
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏