materialized view(MV)是自动刷新或者手动刷新的,View不用刷新 MV也可以直接update,但是不影响base table,对View的update反映到base table上 MV主要用于远程数据访问,mv中的数据需要占用磁盘空间,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 |
只有一个单一的主表,不能包括下面任何一项: |
|
名称 |
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 |
||
默认 |
四、例子
创建物化视图时应先创建存储的日志空间
create materialized view log on table1 tablespace ts_data --日志保存在特定的表空间 with rowid;
CREATE MATERIALIZED VIEW LOG ON table WITH ROWID, SEQUENCE(id, name,STATUS) INCLUDING NEW VALUES;
然后创建物化视图
create materialized view mv_table1 on prebuild table --将物化视图建立在一个已经存在的表上 tablespace ts_data --保存表空间 build deferred --延迟刷新不立即刷新 refresh force --如果可以快速刷新则进行快速刷新,否则完全刷新 on demand --按照指定方式刷新 as select * from table1;
CREATE MATERIALIZED VIEW mv_table BUILD IMMEDIATE REFRESH FAST ON COMMIT AS SELECT pre_id,SUM(AMOUNT) as A_AMOUNT FROM table WHERE STATUS =1 GROUP BY pre_id;
删除物化视图日志
drop materialized view log on table1;
删除物化视图
drop materialized view mv_table1;
------------------------------------------------------------------------------------------------------------------------------------
说明2
相关推荐
这篇文章主要介绍了PostgreSQL物化视图(materialized view)过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1、创建视图 CREATE MATERIALIZED VIEW ...
Postgres物化视图演示 设置 在您的机器上安装了postgresql 运行脚本 createdb your_database psql -f setup_scripts/00_setup.sql psql -d your_database 如果需要更多种子数据, bundle exec ruby dev.rb以为...
PostgreSQL 提供了两种刷新方式:REFRESH MATERIALIZED VIEW table_name 和 REFRESH MATERIALIZED VIEW CONCURRENTLY table_name。前者会锁住对该物化视图的查询工作,而后者可以在刷新视图时不锁住对该物化视图的...
数据库领域关于“实视图”方面的论文汇编。是从事数据库研究、应用不可多得的资料。
物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照(声名:本人刚刚学习物化视图这篇文章来自网络感觉有借鉴...
NULL 博文链接:https://wuaner.iteye.com/blog/686899
materialized_views ==================== 使用在 Postgres 中创建自动更新物化视图的方法扩展ActiveRecord::Migration 。...创建物化视图: 句法: materialize(materialized_view_name, view_defini
introduction of oracle Materialized view
利用强制查询重写和新的强大的调整顾问程序—它们使您不再需要凭猜测进行工作 ,在 10g 中管理物化视图变得更加容易。文中介绍了物化视图的定义及其一些功能。
materialized_view基础知识
Laravel中父子树结构的解决方案 这个Laravel软件包为您的模型添加了分层功能。 物化模型 Materized Model是 ORM的模式的实现。 文献资料 关于物化路径 物化路径模式是一种具有节点树形层次... "vicklr/materialized-
资源来自pypi官网。 资源全名:django-tree-materialized-0.0.1.tar.gz
MariaDB材质化视图这是一个示例,说明如何在MariDB中创建和使用实例化视图。
猫鼬的物化路径 使用树状结构Mongoose插件。安装npm install mongoose-mpath建立重要的提示该插件将parent , path和children字段添加到架构。 您不应在启用了插件的架构中定义它们。 语义学MySchema . plugin ( ...
说明:Oracle中需要创建用户一定是要具有dba(数据库管理员)权限的用户才能创建,而且创建的新用户不具备任何权限,连登录都不可以。 用法:create user 新用户名 identified by 密码 例子: 2. 修改密码 说明:...
为了进一步提高数据仓库的性能, 通过分析数据仓库中性能优化技术的特点, 提出了索引和物化视图耦合的性能优化技术。通过数据挖掘自动选择候选索引和物化视图, 减少查询的扫描范围; 然后研究在物化视图上建立索引的...
-- 物化路径模型 -- 自顶到底的查询 SELECT a.materialized_path, a.commander, a.description FROM t_materialized_model AS a, t_materialized_model AS b WHERE a.materialized_path LIKE CONCAT(b....
6. 普通视图(View)和物化视图(Materialized View)的区别:1、普通视图不存放数据,物化视图存放数据。2、在使用视图进行查询时,是通过View 中的 SQL 查询原表的数据,不能提高查询性能。在通过物化视图进行查询...
主要的 ETL 方案,一种是我们熟悉的物化视图(materialized view),另一种就是本文将要 介绍的 CDC 组件(Change Data Capture 改变数据捕获)。 CDC 特性是在 Oracle9i 数据库中引入的。CDC 能够帮助你识别从上次提取...