oracle雾化试图_ORACLE物化视图具体解释

一、物化的一般使用方法物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性大,不论什么对视图的查询,oracle都实际上转换为视图SQL语句的查询。这样对总体查询性能的提高。并没有实质上的优点。

1、物化视图的类型ON DEMAND、ON COMMIT。

二者的差别在于刷新方法的不同,ON DEMAND顾名思义。仅在该物化视图“须要”被刷新了,才进行刷新(REFRESH),即更新物化视图,以保证和基表数据的一致性;而ON COMMIT是说,一旦基表有了COMMIT,即事务提交。则立马刷新,立马更新物化视图,使得数据和基表一致。

物化视图能够分为下面三种类型:包含聚集的物化视图。仅仅包含连接的物化视图;嵌套物化视图。三种物化视图的高速刷新的限制条件有非常大差别,而对于其它方面则差别不大。创建物化视图时能够指定多种选项,下面对几种基本的选择进行简单说明:

创建方式(Build Methods):包含BUILD IMMEDIATE和BUILD DEFERRED两种。

BUILD IMMEDIATE是在创建物化视图的时候就生成数据,而BUILD DEFERRED则在创建时不生成数据。以后依据须要在生成数据。默觉得BUILD IMMEDIATE。

查询重写(Query Rewrite):包含ENABLE QUERY REWRITE和DISABLE QUERY REWRITE两种。分别指出创建的物化视图是否支持查询重写。

查询重写是指当对物化视图的基表进行查询时,Oracle会自己主动推断能否通过查询物化视图来得到结果,假设能够,则避免了聚集或连接操作。而直接从已经计算好的物化视图中读取数据。

默觉得DISABLE QUERY REWRITE。

在建立物化视图的时候能够指定ORDER BY语句,使生成的数据依照一定的顺序进行保存。

只是这个语句不会写入物化视图的定义中。并且对以后的刷新也无效。

2、ON DEMAND物化视图物化视图的创建本身是非常复杂和须要优化參数设置的,特别是针对大型生产数据库系统而言。但Oracle同意以这样的最简单的,类似于普通视图的方式来做。所以不可避免的会涉及到默认值问题。也就是说Oracle给物化视图的重要定义參数的默认值处理是我们须要特别注意的。物化视图的特点:

(1) 物化视图在某种意义上说就是一个物理表(并且不仅仅是一个物理表),这通过其能够被user_tables查询出来,而得到佐证。

(2) 物化视图也是一种段(segment)。所以其有自己的物理存储属性;

(3) 物化视图会占用数据库磁盘空间,这点从user_segment的查询结果。能够得到佐证。

创建语句:

SQL> create materialized view mv_name as select * from table_name;

默认情况下,假设没指定刷新方法和刷新模式,则Oracle默觉得FORCE和DEMAND。

物化视图的数据怎么随着基表而更新?

Oracle提供了两种方式,手工刷新和自己主动刷新,默觉得手工刷新。也就是说,通过我们手工的运行某个Oracle提供的系统级存储过程或包。来保证物化视图与基表数据一致性。这是最基本的刷新办法了。

自己主动刷新,事实上也就是Oracle会建立一个job,通过这个job来调用同样的存储过程或包。加以实现。

ON DEMAND物化视图的特性及其和ON COMMIT物化视图的差别,即前者不刷新(手工或自己主动)就不更新物化视图,而后者不刷新也会更新物化视图,——仅仅要基表发生了COMMIT。

创建定时刷新的物化视图(指定物化视图每天刷新一次):

SQL> create materialized view mv_name refresh force on demand start with sysdate next sysdate+1;

上述创建的物化视图每天刷新,可是没有指定刷新时间,假设要指定刷新时间(比方每天晚上10:00定时刷新一次):

SQL> create materialized view mv_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:mi:ss');

3、ON COMMIT物化视图ON COMMIT物化视图的创建,和上面创建ON DEMAND的物化视图差别不大。

因为ON DEMAND是默认的。所以ON COMMIT物化视图。须要再添加个參数就可以。

须要注意的是,无法在定义时仅指定ON COMMIT。还得附带个參数才行。创建ON COMMIT物化视图:

SQL> create materialized view mv_name refresh force on commit as select * from table_name;

备注:实际创建过程中,基表须要有主键约束,否则会报错(ORA-12014)。

4、物

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值