---======================================
--= OCM考试经验
--= 物化视图
--=
--=======================================
一、物化视图解释
OCM考试中,物化视图所属SECTION 4,是专门检验数据仓库知识的环节,因此物化视图的主要作用就是降低复杂连接查询的资源消耗,直接在一个实体化(物化)视图中保存查询结果,在日后可以随时调用,数据仓库一般提供读取工作较多,事务性工作较少,如果基表的一次更新都需要大量复杂查询,性能显然不可以保证,物化视图则缓解这一问题
它的基本定义是:物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的。如果你想修改本地副本,必须用高级复制的功能。当你想从一个表或视图中抽取数据时,你可以用从物化视图中抽取。 对于数据仓库,创建的物化视图通常情况下是聚合视图,单一表聚合视图和连接视图。物化视图可以查询表,视图和其它的物化视图。
1、物化视图与其他概念的区别
物化视图与普通表---两者都可以在user_objects查询到相关对象,但普通表一般存储原始数据即第一手生成数据、不依赖其他表,而物化视图的结果集多是复杂的多表连接查询结果,而且某些情况下,而原始表的的更新可以根据需要及时在物化视图上体现出来,普通表则不具备这种功能。
2、物化视图与普通视图的区别
普通视图并不在user_objects产生相应对象,只在数据库中建立查询定义且不具备降低资源消耗的功能,每次查询视图都要重新执行视图的定义,多数用于为远程登录用户提供数据只读查询的转换。
二、物化视图的使用
1、准备条件:
创建相应用户,并且需要dba赋予grant create materialized view to xxx
2、创建物化视图日志:
当使用快速刷新的时候,对基表的所有更改都是先记录在物化视图日志当中,当执行相应的刷新操作时,由日志更新物化视图,
之后日志清空物化视图日志表的名称为mlog$_后面跟基表的名称,且物化视图必须包含基表主键,且基表会有主键,如果不包括,会提示错误。
对多表联合查询时,需要为每个表创建日志
3、创建物化视图
基本语句
create materialized view xxx
选项
创建时间:build immediate
Build immediate:在创建物化视图的同时根据主表生成数据
Bulid deferred:在创建物化视图的同时,在物化视图内不生成数据,如果此时没有生成数据,以后可以采取完全刷新即可
Refresh子句选项:(complete|fast|force)
--Refresh方法-COMPLETE子句