`

实体化试图(Materialized View)介绍

阅读更多

实体化视图概述

Oracle的实体化视图提供了强大的功能,可以用在不同的环境中。在不同的环境中,实体化视图的作用也不相同。数据仓库中的实体化视图主要用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。在数据仓库中,还经常使用查询重写(query rewrite)机制,这样不需要修改原有的查询语句,Oracle会自动选择合适的实体化视图进行查询,完全对应用透明。实体化视图和表一样可以直接进行查询。实体化视图可以基于分区表,实体化视图本身也可以分区。除了在数据仓库中使用,实体化视图还用于复制、移动计算等方面。实体化视图有很多方面和索引很相似:使用实体化视图的目的是为了提高查询性能;实体化视图对应用透明,增加和删除实体化视图不会影响应用程序中SQL语句的正确性和有效性;实体化视图需要占用存储空间;当基表发生变化时,实体化视图也应当刷新。

创建实体化试图主要选项说明

创建实体化视图时可以指定多种选项,下面对几种主要的选项进行简单说明:

 

名称 ON PREBUILD TABLE
描述 将已经存在的表注册为实体化视图。同时还必须提供描述创建该表的查询的 SELECT 子句。可能无法始终保证查询的精度与表的精度匹配。为了克服此问题,应该在规范中包含 WITH REDUCED PRECISION 子句。

 

 

 

名称 Build Clause 创建方式
描述 包括BUILD IMMEDIATE和BUILD DEFERRED两种
取值 BUILD IMMEDIATE 在创建实体化视图的时候就生成数据
BUILD DEFERRED 在创建时不生成数据,以后根据需要在生成数据
默认 BUILD IMMEDIATE

 

 

 

名称 Refresh 刷新子句
描述 当基表发生了DML操作后,实体化视图何时采用哪种方式和基表进行同步
语法
[refresh [fast | complete | force]
         [on demand | commit]
         [start with date]
         [next date]
         [with {primary key | rowid}]
]
取值 FAST 采用增量刷新,只刷新自上次刷新以后进行的修改
COMPLETE 对整个实体化视图进行完全的刷新
FORCE(默认) Oracle在刷新时会去判断是否可以进行快速刷新,如果可以则采用Fast方式,否则采用Complete的方式,Force选项是默认选项
ON DEMAND(默认) 实体化视图在用户需要的时候进行刷新,可以手工通过DBMS_MVIEW.REFRESH等方法来进行刷新,也可以通过JOB定时进行刷新
ON COMMIT 实体化视图在对基表的DML操作提交的同时进行刷新
START WITH 第一次刷新时间
NEXT 刷新时间间隔
WITH PRIMARY KEY(默认)

生成主键实体化视图,也就是说实体化视图是基于表的主键,而不是ROWID(对应于ROWID子句)。 为了生成PRIMARY KEY子句,应该在表上定义主键,否则应该用基于ROWID的实体化视图。主键实体化视图允许识别实体化视图表而不影响实体化视图增量刷新的可用性

WITH ROWID 只有一个单一的主表,不能包括下面任何一项:
●Distinct
●聚合函数
●Group by
●子查询
●连接
●SET操作

 

 

 

名称 Query Rewrite 查询重写
描述 包括ENABLE QUERY REWRITE和DISABLE QUERY REWRITE两种。分别指出创建的实体化视图是否支持查询重写。查询重写是指当对实体化视图的基表进行查询时,Oracle会自动判断能否通过查询实体化视图来得到结果,如果可以,则避免了聚集或连接操作,而直接从已经计算好的实体化视图中读取数据
取值 ENABLE QUERY REWRITE 支持查询重写
DISABLE QUERY REWRITE 不支持查询重写
默认 DISABLE QUERY REWRITE

 

创建实体化试图日志主要选项说明

如果需要进行快速刷新,则需要建立实体化视图日志。实体化视图日志根据不同实体化视图的快速刷新的需要,可以建立为ROWID或PRIMARY KEY类型的。还可以选择是否包括SEQUENCE、INCLUDING NEW VALUES以及指定列的列表。

 

名称 WITH Clause
描述
取值 OBJECT ID 如果是对象实体化视图(object materialized view),则只能采用该方式
PRIMARY KEY
ROWID
SEQUENCE
默认

 

实体化试图举例

创建实体化视图时应先创建存储的日志空间

  1. create materialized view log on table1    
  2.   
  3. tablespace ts_data --日志保存在特定的表空间    
  4.   
  5. with rowid;   

然后创建实体化视图

  1. create materialized view mv_table1        
  2.       
  3. on prebuild table --将实体化视图建立在一个已经存在的表上        
  4.       
  5. tablespace ts_data --保存表空间        
  6.       
  7. build deferred --延迟刷新不立即刷新        
  8.       
  9. refresh force --如果可以快速刷新则进行快速刷新,否则完全刷新        
  10.       
  11. on demand --按照指定方式刷新        
  12.       
  13. as select * from table1;   

删除实体化视图日志

  1. drop materialized view log on table1;   

删除实体化视图

  1. drop materialized view mv_table1;   
分享到:
评论
1 楼 ycj573407106 2013-01-08  
还是没有看懂

相关推荐

    materialized_view基础知识

    物化视图(Materialized View)是数据库管理系统中一种特殊的数据对象,它预先计算并存储了一个查询的结果,以便后续的查询能快速访问这些结果。物化视图的主要用途包括提高查询性能、实现数据的局部复制以及支持...

    PostgreSQL物化视图(materialized view)过程解析

    这篇文章主要介绍了PostgreSQL物化视图(materialized view)过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1、创建视图 CREATE MATERIALIZED VIEW ...

    Oracle数据仓库实体化视图的研究与应用

    本文深入探讨了Oracle数据仓库中的实体化视图(Materialized View)及其在实际应用中的重要性。通过研究,我们发现实体化视图是一种有效管理概要数据的方法,能够显著提升数据仓库的查询性能。特别是对于那些涉及...

    MariaDB-Materialized-View

    材质化视图(Materialized View)是MariaDB中的一个重要特性,它提供了一种数据抽象和优化查询的方式。在此,我们将深入探讨MariaDB中材质化视图的概念、用途以及创建和管理的方法。 材质化视图不同于普通的数据库...

    视图上触发器 & Materialized View 物化视图

    本文将详细探讨"视图上触发器"以及"Materialized View(物化视图)",并结合提供的SQL脚本文件进行分析。 首先,视图是数据库中的一个虚拟表,它是由SQL查询语句定义的,不存储实际数据,而是根据其定义在运行时...

    oracle materialized view

    CREATE MATERIALIZED VIEW mv_emp_pk REFRESH FAST START WITH SYSDATE NEXT SYSDATE + 1/48 WITH PRIMARY KEY AS SELECT * FROM emp@remote_db; ``` 2. ROWID物化视图:这类物化视图基于ROWID,适用于需要...

    tune materialized view

    dbms_advisor.tune_mview使用的例子

    Oracle数据库集中复制方法浅议

    4. 实体化视图复制(Materialized View Replication):一个主站点提供数据,一个实体化视图站点进行数据拷贝。 5. 实体化视图(Materialized View):在目标站点创建的表,存储主站点数据的副本。 6. 快速刷新、...

    Oracle数据库集中复制方法逐步精细

    4. 实体化视图复制(Materialized View Replication):一个主站点提供数据,一个实体化视图站点接收并存储数据。 5. 实体化视图(Materialized View):在实体化视图站点上创建的表,用于存储主站点数据的副本。 6....

    Oracle9i集中数据复制.pdf

    4. 实体化视图复制(Materialized View Replication):一个主站点提供源数据,一个实体化视图站点接收和更新数据。 5. 实体化视图(Materialized View):在目标站点上创建的与源表或视图对应的表,用于存储复制...

    PostgresQL-Materialized-View-Demo:PostgresQL中物化视图的演示脚本

    Postgres物化视图演示 设置 在您的机器上安装了postgresql 运行脚本 createdb your_database psql -f setup_scripts/00_setup.sql psql -d your_database 如果需要更多种子数据, bundle exec ruby dev.rb以为...

    浅谈基于Oracle高级复制实现数据库同步热备.pdf

    4. **实体化视图复制(Materialized View Replication)**:单一主站点向实体化视图站点推送数据。 5. **实体化视图(Materialized View)**:在目标站点上为每个复制表或视图创建对应的数据表,只能通过Oracle复制...

    一个漂亮Materialized和灵活的ReactSelect组件

    在本文中,我们将深入探讨如何利用React Select组件来构建美观且响应式的表单元素,以及如何利用其Materialized风格进行设计增强。 React Select的核心特性包括: 1. **高度可定制化**:React Select允许用户...

    Oracle物化视图创建和使用

    CREATE MATERIALIZED VIEW MV_VIEW AS SELECT * FROM ... ``` 删除物化视图可以使用 DROP MATERIALIZED VIEW 语句,例如: ```sql DROP MATERIALIZED VIEW MV_VIEW ``` 物化视图可以设置自动刷新时间,例如: ```...

    oracle view

    CREATE MATERIALIZED VIEW mv_emp_pk REFRESH FAST START WITH SYSDATE NEXT SYSDATE + 1/48 WITH PRIMARY KEY AS SELECT * FROM emp@remote_db; ``` 这里使用了`REFRESH FAST`选项,意味着需要为源表创建物化视图...

    数据库中的物化视图的使用保姆级

    CREATE MATERIALIZED VIEW [view_name] AS {query_block}; ``` 例如,创建一个全量物化视图,统计表 t1 中的记录数: ``` CREATE MATERIALIZED VIEW mv AS select count(*) from t1; ``` 查询全量物化视图的结果: `...

    Advanced.Replication.Research.by.Kamus.pdf

    - 类型:主体站点 (Master Sites) 和实体化视图站点 (Materialized View Sites)。 - 角色:一个站点可以同时作为一组的主体站点和另一组的实体化视图站点。 ##### 4. 计划链接 (Scheduled Links) - 定义:一种特殊...

Global site tag (gtag.js) - Google Analytics