您的位置:首页 > 数据库 > Oracle

物化视图

2015-10-21 17:17 369 查看
(1)概念

物化视图 (Materialized View)在9i以前的版本叫做快照(SNAPSHOT),从9i开始改名叫做物化视图。它是用于预先计算并保存表连接或聚集等耗时较多的操作的结果,也可用于数据复制和增量数据收集。不同于普通视图只保存sql没有数据,物化视图相当于物理表,有自己的数据。

(2)创建
1.数据生成

Build immediate:在创建物化视图的同时根据主表生成数据(默认)

Bulid deferred:在创建物化视图的同时,在物化视图内不生成数据

2.日志

默认保存在物化视图表空间

NOLOGGING:不记录

LOGGING:记录(默认)

3.刷新方式

Complete :完全刷新整个物化视图,相当于重新生成物化视图,消耗较大。

Fast:增量刷新,只刷新自上次刷新以后进行的修改,需要有物化视图日志。若选择增量刷新,且建立物化视图时不生成数据,需手动全量刷新物化视图才能生效。

Force:当增量刷新可用则增量刷新,当增量刷新不可用,则全量刷新(默认)

4.刷新时间

On demand:在需要刷新时进行刷新

On commit:在基表上有提交操作时,进行更新

Start with:指定首次刷新的时间

Next:刷新的周期时间

若start with 省略,则首次刷新时间按创建时间加上next时间

若next省略,则只刷新一次

若start with 和 next 都省略,不会自动刷新

5.基于主键与rowid

primary key:需要基表上有主键,可用于多表。(默认)

rowid:用于单表,不需要基表上有主键,快速刷新需要基表上有基于rowid 的物化视图日志,如

create MATERIALIZED VIEW log on t12 with rowid;

e.g

CREATE MATERIALIZED VIEW mv_t12 

NOLOGGING --不记录日志

BUILD DEFERRED --不马上生成数据 

REFRESH FORCE --当增量刷新可用则增量刷新,当增量刷新不可用,则全量刷新

START WITH SYSDATE --马上刷新

NEXT SYSDATE +1/( 24*60 ) --刷新间隔

WITH PRIMARY KEY --基于主键

AS 

SELECT * FROM t12;

(3)删除

drop MATERIALIZED VIEW view_name

(4)手动刷新

dbms_mview.refresh('表名','F'); --快速刷新,也就是增量刷新

dbms_mview.refresh('表名','C');   --完全刷新

dbms_mview.refresh('mv_t11','?');  --force刷新

(5)物化视图系统表

SELECT * FROM DBA_MVIEWS;

(6)物化视图日志

一.查询

select mlog$_表名 --查看物化视图日志内容 

select * from dba_mview_logs;--查看物化视图日志详细情况

二.创建

create materialized view view_name log on table;

三.删除

drop materialized view view_name log on table
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息