700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > ORACLE创建物化视图(on commit\on demand)

ORACLE创建物化视图(on commit\on demand)

时间:2022-11-12 13:18:33

相关推荐

ORACLE创建物化视图(on commit\on demand)

ORACLE创建物化视图(on commit\on demand)

前言

个人笔记(物化视图学习笔记,有兴趣的小伙伴可以看看这个视频)

物化视图的类型:Oracle提供了两种方式,手工刷新和自动刷新,默认为手工刷新。即:ON DEMAND. ON COMMIT二者的区别在于刷新方法的不同,ON DEMAND顾名思义,仅在该物化视图“需要“被刷新 了,才进行刷新(REFRESH),即蕈物化视图,以保证和基表数据的一致性;而ON COMMIT是 说,一旦基表有了COMMIT,即事为提交,则立刻刷新,立刻更新物化视图,使得数据和基表一 致.

创建语句:create materialized view mv_name [选项N] as selectfrom table_name;

[选项1] **BUILD [IMMEDIATE, DEFERRED]**是否在创建视图时生成数据,默认生成、 DEFERRED为不生成数据,需要的时候生成・

[选项2] REFRESH [FAST, COMPLETE, FORCE, fast是增量刷新,或者说叫 快速刷新;complete为全表刷新;force为如果增量刷新可以使用则使用增量刷新,否则全表刷 新;never则是不进行刷新(不使用).

[选项3] ON [DEMAND, COMMIT]即手工刷新和提交时刷新。

[选项4] START WITH通知数据库完成从主表到本地表第一次复制的时间。 [选项5] NEXT说明了刷新的时间间隔,下一次刷新的时间=上一次执行完成的时间+时间间 隔。

注:一般普通账号并没有建立物化视图的权限,需要使用sysdba或者sysdba赋权的用户才可以建立物化视图

一、表做了更新commit之后就自动更新物化视图(on commit)

代码如下:

--全量更新,增量更新需要定义id字段,并设置为增量更新字段,根据id进行增量更新CREATE MATERIALIZED VIEW V_ABREFRESH FORCE ON COMMITASSELECTA.ICr A.HAKE, B.CLSIC, B.NAME AS CLSNAMEFROM A,3WHERE A.CLSID - B.CLSIE;

二、设置定时更新物化视图(on demand)

代码如下:

--也是全量更新,设置定时更新物化视图,需要设置开始日期以及下次刷新时间设置,如下下次刷新时间为明天CREATE MATERIALIZED VIEW MV_ABREFRESH FORCE ON DEMANDSTART WITH SYSDATENEXT SYSDATE+1ASSELECTk.lC, "NAME, B.CLSIE, B.NAME ,FROM A,BWHERE A.CL5ID - B.CL5IE;

2.读入数据

代码如下:

--快速刷新fast刷新,如下为一分钟刷新一次,如下这个不是全量刷新创建了根据rowid进行增量刷新的规则,后续根据索引rowid进行增量更新CREATE MATERIALIZED VIEW LOG ON A WITH ROWID;CREATE MATERIALIZED VIEW LOG ON B WITH ROWID;CREATE MATERIALIZED VIEW MV_ABREFRESH FAST ON DEMANDSTART WITH SYSDATENEXT SYSDATE+1/1440ASSELECTA.ROWID AS AROWID, B.ROWID AS BROWID,A.ID, A.NAME, B.CLSID, B.NAME AS CLSNAMEFROM A,BWHERE A.CLSID = B.CLSI;

物化视图查询多了两列

总结

物化视图可以自动刷新也可以手动刷新,可以按照自己的需求进行选择,物化视图的创建会消耗物理内存,能够在user_table表中查到具体存储的表,这样的好处在于调用视图时不用每次都进行逻辑取数,而是直接从表中取数。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。