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
相关推荐
创建物化视图可以使用 CREATE MATERIALIZED VIEW 语句,例如: ```sql CREATE MATERIALIZED VIEW MV_VIEW AS SELECT * FROM ... ``` 删除物化视图可以使用 DROP MATERIALIZED VIEW 语句,例如: ```sql DROP ...
在Oracle数据库中,物化视图(Materialized View)是一种用于优化查询性能的重要工具。它预先计算并存储了复杂的查询结果,从而在实际查询时能够快速地返回数据,大大提升了查询效率。然而,在创建物化视图的过程中...
此外,还可以通过`CREATE MATERIALIZED VIEW LOG`创建物化视图日志,并使用`DROP MATERIALIZED VIEW LOG`删除日志。`DROP MATERIALIZED VIEW`命令用于删除物化视图,而`DBMS_MVIEW.REFRESH`过程则用于手动刷新物化...
- **创建物化视图**:使用 `CREATE MATERIALIZED VIEW` 命令来创建物化视图。 - **自定义预构建的物化视图**:用户可以根据自己的需求预先构建物化视图,并对其进行优化。 - **物化视图的索引选择**:选择适当的索引...
Oracle数据库中的物化视图(Materialized View,简称MV)是一种强大的优化工具,它通过预先计算并存储查询结果,提供了一种快速访问复杂查询数据的方式。这种技术在数据仓库环境中尤其有用,因为数据仓库通常涉及...
### Oracle 物化视图详解 #### 一、物化视图的概念与作用 物化视图是Oracle数据库中一种特殊的数据对象,它保存的是基于一个或多个表(称为基表)的查询结果集,并且这些结果集是物理上存在的。与普通的视图不同,...
- **创建物化视图**:使用CREATE MATERIALIZED VIEW语句创建物化视图。 - **刷新物化视图**:定期或按需刷新物化视图以保持数据的最新状态。 - **查询物化视图**:通过简单的SELECT语句直接查询物化视图。 - **维护...
Oracle物化视图是一种在数据库中预先计算并存储查询结果的数据库对象,它提供了一种高效的数据汇总和数据复制机制。物化视图是远程数据的本地副本,用于提高查询性能,尤其是在数据仓库环境中,通过预计算汇总数据,...
创建一个ON DEMAND物化视图非常类似于创建普通视图,只需在CREATE语句中添加`MATERIALIZED`关键字。例如: ```sql CREATE MATERIALIZED VIEW mv_testcf AS SELECT * FROM xiaotg.testcf; ``` 这个例子中,物化视图...
在Oracle数据库中,物化视图(Materialized View)是一种特殊的数据库对象,它存储的是一个查询的结果集,可以理解为一个预计算的快照。物化视图主要用于提高报表查询性能和实现数据复制等功能。 物化视图的特性...
在Oracle数据库中,物化视图(Materialized View)是一种特殊的对象,它存储了预计算查询的结果,从而可以提高查询性能。物化视图通常用于汇总查询、复杂查询等场景下,它可以显著减少实时查询所需的时间。 物化视图...
### ORACLE中的物化视图详解 物化视图,作为ORACLE数据库中的一种特殊对象,其实质上是预先计算并存储的查询结果集。它不仅能够提高查询效率,还能在分布式环境中提供本地数据副本,简化远程数据访问,以及在数据...
在Oracle数据库中,物化视图(Materialized View, MV)是一种重要的性能优化工具,尤其在数据仓库和决策支持系统中。物化视图预先计算并存储了一个查询的结果,允许快速访问而不是每次需要时重新执行复杂的查询。在...
Oracle数据库的物化视图日志(Materialized View Log)是解决这一问题的有效手段。物化视图本身是数据库中的一个对象,它存储了某个查询结果集,这个结果集通常是远程数据的本地副本,或者是对多个数据表进行聚合...
### Oracle物化视图详解 #### 一、物化视图概述 Oracle物化视图是一种特殊类型的数据库对象,其核心功能在于预先计算并存储基于一个或多个表的查询结果,以此来加速后续的查询操作。与普通视图不同,普通视图在...
4. **创建物化视图**:接下来,使用`CREATE MATERIALIZED VIEW`语句来创建物化视图。在本例中,创建了一个名为`stu_view`的物化视图,其数据源为`stu`表,并设置了自动刷新策略,即每天刷新一次。 5. **插入数据**...
对于已经存在的物化视图,可以使用ALTER语句来修改其刷新方式,例如`ALTER MATERIALIZED VIEW mv_name REFRESH [FORCE|FAST|COMPLETE|NEVER] [ON DEMAND|ON COMMIT]`。 物化视图对于大数据分析、报表生成和OLAP...