实体化视图(Materialized View)即快照(Snapshot),也称物化视图

解决方案 »

  1.   

    它们是一回事!,同一个概念,不同的称呼而已实体化视图(Materialized View)即快照(Snapshot),也称物化视图,
    存放于本地。实体化视图常用来存放预计算的合计数据,如汇总和平
    均。实体化视图也可以是主表的一个完整副本。实体化视图往往定义
    成只读。通常情况下,实体化视图并不随着主表的更新而刷新。对于
    那些实时性不强而又要经济查询的信息来说,实体化视图可以是一个
    为其它远程节点提供信息的最好的方法。
    实体化视图在应用中有如下优缺点: 
    优点:1、改进了性能,加快了查询速度。实体化视图是一个本地
             对象,用户在查询数据时,避免了网络开销。
          2、提高了数据的可靠性和安全性。如果主表数据丢失,并
             不影响实体化视图的数据查询。在实体化视图没有刷新
             之前,且该视图是主表的一个完整副本(在建立实体化视
             图时执行了Select * From TableName),那么,该视图实
             际上保留了主表数据最近的一个备份。
          3、实体化视图可以被自动定时刷新。
    缺点:1、实体化视图查询的信息不是实时信息。
          2、实体化视图占用本地物理存储空间。
    实体化视图的建立。
    建立实体化视图用 CREATE MATERIALIZED VIEW 或 CREATE
    SNAPSHOT 语句。为了在自己的模式中建立实体化视图,用户必须具
    有CREATE MATERILIZED VIEW、CREATE SNAPSHOT、CREATE
    TABLE、CREATE INDEX、CREATE VIEW系统权限。
    建立实体化视图的语句(此处只列出常用选项):
      CREATE MATERILIZED VIEW [SCHEMA.] 实体化视图名
      [TABLESPACE] [STORAGE]
      [REFRESH [FAST|FORCE|COMPLETE]]
      [START WITH 日期] [NEXT 日期]
      [FOR UPDATE]
      AS 子查询
    An Example of Creating Materialized View:
      Create Materialized View BB
    Refresh Complete
    Start With Sysdate+10/24 Next Trunc(Sysdate,’Day’)+10/24
      As Select Sum(Score) Total From AA Group By Class;
      说明:该语句建立了一个实体化视图BB,其源数据从表AA获
    得。它的刷新模式为完全刷新(Complete),第一次刷新时间为第二
    天上午10点,以后在每星期一的上午10点进行完全刷新。
    实体化视图的刷新。
    1、 自动刷新,如上例所示,在某个特定的时间自动更改本地实体化视图的内容。
    2、  手工刷新,使用DBMS_REFRESH 存储过程来完成。
         EXEC DBMS_REFRESH.REFRESH(‘BB’); 
         注:BB为实体化视图名。
    3、 刷新的三种方式:快速刷新(Fast)、完全刷新(Complete)、
    快速/完全刷新(Force)。
    实体化视图的删除。
    用DROP SNAPSHOT 或 DROP MATERIALIZED VIEW 命令。
    实体化视图的修改。
    实体化视图的修改主要是指改变其存储特性和自动刷新方式及其
    刷新时间。
       例:ALTER SNAPSHOT 实体化视图名
    REFRESH FORCE;
       或  ALTER MATERIALIZED VIEW 实体化视图名
    REFRESH FORCE;
    实体化视图记录的修改。
    实体化视图记录能否被修改,要看在实体化视图建立时,有没有用
    FOR UPDATE 选项。
    实体化视图记录的更改、删除和增加并不影响主表的记录。当实体
    化视图的记录被更改或删除后,可通过刷新操作(自动或手工)来重新获
    得主表的数据
    实体化视图日志。
    实体化视图日志也就是快照日志。Oracle把对实体化视图主表的修
    改存储在日志上,并用该日志刷新实体化视图。用日志刷新实体化视图
    的刷新成为快速刷新,若没有日志,则不能用FAST方式来刷新实体化
    视图。
    CREATE SNAPSHOT LOG ON AA;    建立实体化视图日志
    DROP SNAPSHOT LOG ON AA;      删除实体化视图日志