物化视图介绍与使用

一、简介
物化视图,它是用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,从而快速的得到结果,我们可以将物化视图当成一个保存查询结果集的一张表。
物化视图对应用透明,增加和删除物化视图不会影响应用程序中SQL 语句的正确性和有效性;物化视图需要占用存储空间;当基表发生变化时,物化视图也应当刷新。
二、建立一个满足需求的物化视图
创建一个物化视图
1.首先需要创建物化视图时创建存储的日志空间(存储物化视图的对象的改变信息)
 CREATE MATERIALIZED VIEW LOG ON bill WITH ROWID;
2.创建物化视图
create materialized view mv_bill
           TABLESPACE BILL    --保存表空间
           BUILD DEFERRED              --延迟刷新不立即刷新,此建立初始视图一般没数据
           refresh fast                          --快速刷新(只刷新变更数据)
           with rowid                             --根据rowid刷新(默认是主键)
           On demand                          --按照指定方式刷新(定时刷新)
           start with to_date('2013-10-10 20:00:00','YYYY-MM-DD HH24:MI:SS') next sysdate+1/48
              as
           select id,user_id,amount from bill  where state='pay';
    
     假设mv_bill物化视图保存的是银行网上转账的用户账户金额,我们都知道在网上转账需要第二天0点余额才进行刷新,实际上我们的交易已经成功,记录在bill表中,而我们账户的余额提现在mv_core_bill中,每天10点的视图刷新后,那么钱就到账了。这只是一个可能的简单例子,下面需要介绍物化视图的参数来合理应用这项技术。
 
三、物价视图的参数
1、创建方式(Build Methods):Build  Immediate 和Build Deferred两种,Build  Immediate 指创建后立即生成数据。Build Deferred指在下一次刷新时生成数据。
2、查询重写(Query Rewrite):Enable Query Rewrite和Disable Query Rewrite两种。查询重写是指当对物化视图的基表进行查询时,Oracle会自动判断能否通过查询物化视图来得到结果,如果可以,直接从物化视图中读取数据。默认为Disable Query Rewrite。
3、刷新(Refresh):指当基表发生了DML操作后,物化视图何时采用哪种方式和基表进行同步。刷新的模式有两种:On Demand和On Commit。On Demand指物化视图在用户需要的时候进行刷新,可以手工通过DBMS_MVIEW.REFRESH等方法来进行刷新,也可以通过JOB定时进行刷新。On Commit指物化视图在对基表的DML操作提交的同时进行刷新。刷新的方法有四种:Fast 、Complete 、Force和Never。Fast 刷新采用增量刷新,只刷新自上次刷新以后进行的修改。Complete 刷新对物化视图进行截断再进行完全的刷新。如果选择Force方式,则Oracle在刷新时会去判断是否可以进行快速刷新,如果可以则采用FAST方式,否则采用Complete 的方式。Never指物化视图不进行任何刷新。默认值是Force On Demand。
4、物化视图日志:如果需要进行快速刷新,则需要建立物化视图日志。物化视图日志根据不同物化视图的快速刷新的需要,可以建立为RowID或Primary Key类型的。还可以选择是否包括Sequence、Including New Values以及指定列的列表。
可以指明on prebuild Table语句将物化视图建立在一个已经存在的表上。这种情况下,物化视图和表必须同名。当删除物化视图时,不会删除同名的表。这种物化视图的查询重写要求参数Query_Rewrite_integerity必须设置为 trusted或者stale_tolerated。(可以用于不停机的大量数据迁移,涉及一个实验)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29076828/viewspace-1196314/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29076828/viewspace-1196314/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值