物化视图简述

来源:互联网 发布:linux 线程绑定cpu核 编辑:程序博客网 时间:2024/06/05 04:35
 

一个简单的例子

CREATE MATERIALIZED VIEW  aaa   AS SELECT * from abc;

这个是直接创建一个物化视图,但是这个既不能刷新也不能定时,用处还不如单纯一个表好用,起码表还能用索引。。。

为了实现能够定时刷新的功能,我们需要添加以下的参数来控制:

REFRESH 和START WITH ,NEXT 

这里需要说明一下REFRESH

这个动作有三种模式fast、complete和force

fast利用物化视图日志同步需要更新的行:

要使用这个必须在数据来源表所在的数据库中建立物化视图的日志,实例:

create Materialized View  log on abc;


CREATE MATERIALIZED VIEW aaa

   REFRESH FAST START WITH SYSDATE NEXT  SYSDATE + 10/1440
   WITH PRIMARY KEY
   AS SELECT * from abc;

注:

这里要注意的是使用日志物化视图是要主键的

 

complete则是重建视图:

这个说白了就是定期重建,如果数据量很大的话还是悠着点为好,实例:

CREATE MATERIALIZED VIEW aaa

   REFRESH complete START WITH SYSDATE NEXT  SYSDATE + 10/1440
   AS SELECT * from abc;

 

force相当于将权力将给oracle自行处理:

这个玩意就是oracle自己的事情了,说实话我基本没用过

CREATE MATERIALIZED VIEW aaa

   REFRESH force START WITH SYSDATE NEXT  SYSDATE + 10/1440
   AS SELECT * from abc;

 

物化视图创建完毕以后会生成一个定时任务,定时任务调用物化视图刷新:

dbms_refresh.refresh('"yuzh"."aaa"');

所以,如果物化视图比较多的话,完全可以写一个过程调用,这样只用一个定时任务就可以实现多个物化视图的刷新了

原创粉丝点击