物化视图的刷新有二类,分别是:on commit ;on demand。刷新方法有三种分别是:快速(FAST),完全(COMPLETE),强制(FORCE);
ON COMMIT 与DEMAND 在应用中的问题
ON COMMIT
如果选择on commit ,则在对主表应用上会造成速度,这是因为ORACLE在对主表操作提交后马上会进行刷新物化视图操作,这部分时间是也包括在提交时间中。
a) refresh force on commit:中对删,新增记录,物理视图都能真实反映主表的变化。同时这种情况下不用建物化视图日志表。缺点是提交时间长。
b) refresh fast on commit:中对新增或修改能真实反映主表的变化,但对删除则不能反映,必须进行一次完全刷新。
ON DEMAND
DEMAND必须用DBMS_MVIEW.REFRESH存储过程建立的JOB去定时刷新物化视图。
a) refresh fast on DEMAND:必须通过调用DBMS_MVIEW.REFRESH存储过程来进行快速刷新反映主表新增情况;但当对主表中的数据删除或修改时,快速刷新则会报错,因此必须调DBMS_MVIEW.REFRESH的完全刷新才能反映。可以通过建立JOB解决。
表1:快速刷新
declare | |
表2:完全刷新
declare | |
注意:用FAST 刷新物化视图,前提要新建物化视图日志表。
b) refresh force/complate on DEMAND:
在这种方式下物化视图也是无法自动刷新,必须通过JOB或手工。
FAST、FORCE、COMPLETE区别
FAST:增量式刷新,使用此方法必须有前提,就是建立物化视图日志表。
FORCE::如果可以以fast 方式刷新则用,否则完全刷新。
COMPLETE:先将物化视图表内容删除,然后再刷新。此方式缺少就是在刷新时间内用法在页面无法查到的所需要内容。