前端之家收集整理的这篇文章主要介绍了
Oracle materizlized view Study,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
首先描述几个术语,如下:
基表:也就是我们常说的master table和master materialized view,这里说明一下,基表并不是说
这只有一个表,它是你创建MV时所需要用到的表(可能有多个)或相关的上一级的MV。
MV: 也就是物化视图,英文名materizlized view。
源端(master 站点,master MV size): 都是指基表所在的一端(基表所在数据库)
MV端(mv站点,mv site): 物化视图所在地一端(mv所在数据库)
需要注意的是,MV跟普通的view不同,它是有segment存在的,不像view那样是虚拟存在的。你可以再dba_semgents中
查到它的对象大小,当然它的好处就是,我们在利用MV进行查询时,不再需要去访问基表了,只需通过访问MV对应的
结果集就行了。当然,这里涉及一个刷新机制,MV的数据和基表的数据是定期刷新来完成同步的。后面会讲到涉及的
集中mv的刷新机制。
建立物化视图
CREATEMATERIALIZEDVIEWVW_TEMPTABLE
REFRESHFORCEONDEMAND
WITHROWID
AS
SELECT"TEMPTABLE"."A""A"FROM"TEMPTABLE""TEMPTABLE";
相应的还要在表TEMPTABLE上建立视图log。
dbms_mview.refresh('表名','F') --快速刷新,也就是增量刷新
COMPLETE (C) - Materialized view is completely refreshed from the masters FORCE (?) - Oracle Database performs a fast refresh if possible,otherwise a complete refresh FAST (F) - Oracle Database performs an incremental refresh applying changes that correspond to changes in the masters since the last refresh NEVER (N) - User specified that the Oracle Database should not refresh this materialized view 简单在总结为如下几点: compelete: 完全刷新,在压力比较大的情况下,完全刷新可能会带来很多问题,特别是跨站点的情况,对网络要求很高。 force:强制刷新,竟可能的使用增量快速刷新,如果不能则使用完全刷新。默认值是force。 fast: 增量快速刷新。 never:从不刷新。 还有一个字段BUILD_MODE,这是表明创建mv的方式,说白了就是指在创建mv时是否生成数据。默认有如下几种: IMMEDIATE - Populated from the masters during creation DEFERRED - Not populated during creation. Must be explicitly populated later by the user. PREBUILT - Populated with an existing table during creation. The relationship of the contents of this prebuilt table to the materialized view's masters is unknown to the Oracle Database.