Oracle物化(Materialized)视图_基本概念—Oracle学习(1)

一、基本概念

  • 物化视图是一种特殊的物理表,普通视图是虚拟表,应用的局限性大。可以创建索引,创建方法和表一样。
  • 可以理解为用来存储数据表的副本或者聚集,可以用来复制一个表的全部数据或者部分数据,也可以复制多表关联查询的结果集。然后按照指定时间间隔自动刷新副本数据。
  • 物化视图是基于select查询结果的数据副本,简单来讲就是数据的复制表,但是它可以按照特定的刷新策略刷新复制表中的数据。
  • 会占用磁盘空间

二、作用

  • 远程数据本地化:可以用来做数据同步。(笔者本次参与的N项目的多系统的数据联携就是这样)
  • 本地单表或多表数据的汇总:这样就可以定时把汇总数据更到复制表,用来做分析决策用。
  • 复杂视图的物化:把数据不经常实时更新的视图,物化成物理表,然后在物化表上建相应索引,来大大提高查询效率。

三、物化视图类型(刷新模式)

1.ON DEMAND(指定刷新时间间隔)
在需要时更新物化视图,以保证和基表数据的一致性。(需要手动刷新或自动刷新)
没有指定刷新方法和刷新模式时,默认组合是FORCE和DEMAND

※手动刷新和自动刷新:
默认为手动刷新
自动刷新:Oracle会建立一个job,通过这个job来调用相同的存储过程或包来加以实现。
例如:
create materialized view MVIEW_NAME 
refresh force on demand start with sysdate
next sysdate+1(指定物化视图每天刷新一次,但是没有指定刷新时间)
↓
create materialized view MVIEW_NAME
refresh force on damand start with sysdate
next to_date(concat(to_char(sysdate+1,"dd-mm-yyyy"),"22:00:00"),"dd-mm-yyyy hh24:24:mi:ss")(指定刷新时间为每天晚上10点定时刷新一次)

2.ON COMMIT(基于事物的刷新)
一旦基表有了commit(事物提交),则立刻刷新,更新物化视图,使得数据和基表一致。
比ON COMMAN多个参数:
例如:
create materialized view MVIEW_NAME
refresh force on commit as select * from TABLE_NAME

※实际创建中,基表需要有主键约束,否则会报错(ORA-12014)

四、基本语句
create materialized view MVIEW_NAME as select * from TABLE_NAME;
drop materialized view MVIEW_NAME(不可以用常规删除表的方法(右键drop)来删除物化视图)

五、刷新方法

FAST:采用增量刷新,只刷新自上次刷新以后进行的修改。
COMPLETE:对整个物化视图进行完全的刷新
FORCE:Oracle在刷新时会去判断是否可以进行快速刷新,如果可以采用FAST方式,否则采用COMPLETE
NEVER:视图不采用任何刷新

对于已经创建好的物化视图,可以修改刷新方式
例如:
alter materialized view MVIEW_NAME 
refresh force on demand start with sysdate
next to_date(concat(to_char(sysdate+1,"dd-mm-yyyy"),"22:00:00"),"dd-mm-yyyy hh24:24:mi:ss")

六、什么时候采用何种方式同步基表数据
当基本发生了DML操作后,采用上边两种刷新模式

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值