ORACLE 实体化视图学习随笔

2023-01-23 21:43:11   第一文档网     [ 字体: ] [ 阅读: ] [ 文档下载 ]

#第一文档网# 导语】以下是®第一文档网的小编为您整理的《ORACLE 实体化视图学习随笔》,欢迎阅读!
实体化,视图,随笔,ORACLE,学习
ORACLE物化视图

MView中文名称为物化视图(Materialized View,相对于不同的视图来说,MView的不同之处在于MView的结果会保存在一个

普通的数据表中,在对MView进行查询的时候不再会对创建MView的基表进行查询,而是直接查询MView对应的结果表,然后通过定 期的刷新机制来更新MView表中的数据。

MView在实际中的主要作用: 1、减轻网络负担:通过MV将数据从一个数据库分发到多个不同的数据库上,通过对多个数据库访问来减轻对单个数据库的网络负担。 2搭建分发环境:通过从一个中央数据库将数据分发到多个节点数据库,达到分发数据的目的。 3、复制数据子集:MV可以进行行级/列级的筛选,这样可以复制需要的那一部分数据。 4、支持离线计算:MV不需要专用的数据库连接,用户可以按照自己的需求来复制所需要的那一部分数据。

MView的刷新

Oracle支持三种种方式的刷新:完全刷新和快速刷新以及强制刷新。

完全刷新(complete refresh 对一个MView进行全部刷新的时候差不多是将MView重建了,在进行MView部刷新的时候会现将MView中现有的数据删除(版本在10G或以上) 或者TRUNCATE(版本低于9i,然后在根据创建MView时候的查询生成数据插入到MView中。 对于多层的MView来说,当master MView全部刷新之后对应的下一级的MView也需要全部刷新,否则将会收到ORA-12034的错误。

快速刷新(fast refresh 快速刷新是一种比完全刷新快的多的刷新方式,快速刷新只刷新自上次刷新以来修改的数据,因为快速刷新所要操作的数据量少,使用这种 方法能大大的节省带宽. 快速刷新要求在基表上面有MView Log,接着上面给出的例子,我们来给MVT做一个快速刷新。

如果没有建立MView Log的话要进行快速刷新的话会报错

强制刷新(force refresh

当进行强制刷新的时候系统会首先尝试进行快速刷新,如果快速刷新无法进行的时候系


统将会进行完全刷新。其实就是一个快速刷新和完全 刷新的结合体。

创建物化视图例子:(基于主键的物化视图,此时基表上一定要有键约束) create materialized view mvt3 refresh fast start with sysdate next sysdate+1/48 on demand as select * from test_mv; 创建物化视图更新日志例子(基于主键约束) create materialized view log on test_mv; 此时数据库系统会默认创建以mlog$_test_mv命名的表,并且由一个内部触发器来维护该日志,用USER_INTERNAL_TRIGGERS可以查看该 触发器。 手动指定刷新 exec dbms_mview.refresh('mvt', 'F');--快速刷新 C”完全刷新 创建基于ROWID的物化视图例子(基表上没有主键约束) create materialized view mvt4 refresh force with rowid start with sysdate next sysdate + 1/48 on demand as select * from test_mv; 创建物化视图更新日志例子(基于ROWID create materialized view log on test_mv with rowid; MView分类

按对MView可以进行的DML的操作分

按对MView可以进行的DML的操作可将MView分成三种 1、只读MView:不指定FOR UPDATE参数所创建MView为只读MView,这种MView将和原查询的数据保持一致,不会存在有数据冲突等问题。 2、可更新MView:在建立MView的时候使用FOR UPDATE参数,同时要求将MView放在刷新组里面。建立的MView可以被更新修改, 而且MView的修改也会在MView刷新的时候被推到原表中。 3可写MView在建立MView的时候使用FOR UPDATE参数,但是不将MView放在刷新组里面。这样的MView可以被修改,但是所有的修改 会在MView被刷新的时候被刷新掉。


本文来源:https://www.dy1993.cn/y8eK.html

相关推荐