物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。
物化视图可以查询表,视图和其它的物化视图。
通常情况下,物化视图被称为主表(在复制期间)或明细表(在数据仓库中)。
对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的。如果你想修改本地副本,必须用高级复制的功能。当你想从一个表或视图中抽取数据时,你可以用从物化视图中抽取。
对于数据仓库,创建的物化视图通常情况下是聚合视图,单一表聚合视图和连接视图。
本篇我们将会看到怎样创建物化视图并且讨论它的刷新选项。
在复制环境下,创建的物化视图通常情况下主键,rowid,和子查询视图。
1.主键物化视图:
下面的语法在远程数据库表emp上创建主键物化视图
CREATE MATERIALIZED VIEW mv_emp_pk
REFRESH FAST START WITH SYSDATE
NEXT SYSDATE + 1/48
WITH PRIMARY KEY
AS SELECT * FROM emp@remote_db;
Materialized view created.
注意:当用FAST选项创建物化视图,必须创建基于主表的视图日志,如下:
CREATE MATERIALIZED VIEW LOG ON emp;
Materialized view log created.
2.Rowid物化视图
下面的语法在远程数据库表emp上创建Rowid物化视图
CREATE MATERIALIZED VIEW mv_emp_rowid
REFRESH WITH ROWID
AS SELECT * FROM emp@remote_db;
Materialized view log created.
3.子查询物化视图
下面的语法在远程数据库表emp上创建基于emp和dept表的子查询物化视图
CREATE MATERIALIZED VIEW mv_empdept
AS SELECT * FROM emp@remote_db e
WHERE EXISTS
(SELECT * FROM dept@remote_db d
WHERE e.dept_no = d.dept_no)
Materialized view log created.
REFRESH 子句
[refresh [fast|complete|force]
[on demand | commit]
[start with date] [next date]
[with {primary key|rowid}]]
Refresh选项说明:
a. oracle用刷新方法在物化视图中刷新数据.
b. 是基于主键还是基于rowid的物化视图
c. 物化视图的刷新时间和间隔刷新时间
Refresh方法-FAST子句
增量刷新用物化视图日志(参照上面所述)来发送主表已经修改的数据行到物化视图中.如果指定REFRESH FAST子句,那么应该对主表创建物化视图日志
SQL> CREATE MATERIALIZED VIEW LOG ON emp;
Materialized view log created.
对于增量刷新选项,如果在子查询中存在分析函数,则物化视图不起作用。
Refresh方法- COMPLETE子句
完全刷新重新生成整个视图,如果请求完全刷新,oracle会完成 完全刷新即使增量刷新可用。
Refresh Method – FORCE 子句
当指定FORCE子句,如果增量刷新可用Oracle将完成增量刷新,否则将完成完全刷新,如果不指定刷新方法(FAST, COMPLETE, or FORCE),Force选项是默认选项
主键和ROWD子句
WITH PRIMARY KEY选项生成主键物化视图,也就是说物化视图是基于主表的主键,而不是ROWID(对应于ROWID子句). PRIMARY KEY是默认选项,为了生成PRIMARY KEY子句,应该在主表上定义主键,否则应该用基于ROWID的物化视图.
主键物化视图允许识别物化视图主表而不影响物化视图增量刷新的可用性。
Rowid物化视图只有一个单一的主表,不能包括下面任何一项:
n Distinct 或者聚合函数.
n Group by,子查询,连接和SET操作
刷新时间
START WITH子句通知数据库完成从主表到本地表第一次复制的时间,应该及时估计下一次运行的时间点, NEXT 子句说明了刷新的间隔时间.
CREATE MATERIALIZED VIEW mv_emp_pk
REFRESH FAST
START WITH SYSDATE
NEXT SYSDATE + 2
WITH PRIMARY KEY
AS SELECT * FROM emp@remote_db;
Materialized view created.
在上面的例子中,物化视图数据的第一个副本在创建时生成,以后每两天刷新一次.
总结
物化视图提供了可伸缩的基于主键或ROWID的视图,指定了刷新方法和自动刷新的时间。
分享到:
相关推荐
Oracle数据库中的物化视图(Materialized View,简称MV)是一种强大的优化工具,它通过预先计算并存储查询结果,提供了一种快速访问复杂查询数据的方式。这种技术在数据仓库环境中尤其有用,因为数据仓库通常涉及...
Oracle中的物化视图是一种非常重要的数据库特性,它主要用于提高查询性能和数据一致性。物化视图是预先计算好的查询结果,存储为物理表的形式,这样在后续的查询中可以直接使用,而不需要每次都执行复杂的查询操作。...
物化视图可能包含敏感数据,因此必须考虑到安全性问题,确保只有授权用户才能访问物化视图中的数据。 #### 加载与刷新物化视图 - **完整刷新**:当需要更新所有数据时,可以使用完整刷新。 - **快速刷新**:对于只...
3. **嵌套物化视图**:物化视图中包含了其他物化视图。 对于快速刷新,不同类型的物化视图有不同的要求。例如,只包含连接的物化视图可以使用`REFRESH FAST`,但需要物化视图日志。物化视图日志是用于跟踪基表更改...
在实际应用中, Oracle 物化视图可以用于提高查询性能,例如在数据仓库和商业智能应用中。但是,需要carefully 设计和实现物化视图,以便达到最佳的性能和可维护性。 Oracle 物化视图是一种强大的工具,可以提高...
1. **ONDEMAND**:默认情况下,物化视图采用的是ONDEMAND模式,即只有当用户显式地请求刷新时,Oracle才会更新物化视图中的数据。这是一种最简单的创建方式,适用于数据变化不频繁或者对数据新鲜度要求不高的场景。 ...
此时,物化视图中还没有任何数据。接着,我们执行DBMS_MVIEW.REFRESH过程来刷新物化视图,使其包含与基表T相同的数据。刷新完成后,物化视图MVT中将包含与表T相同数量的记录,且两者具有相同的结构。 物化视图的...
1. FAST 子句:增量刷新,基于物化视图日志,用于发送主表已经修改的数据行到物化视图中。 2. COMPLETE 子句:完全刷新,重新生成整个视图。 3. FORCE 子句:当指定 FORCE 子句,如果增量刷新可用 Oracle 将完成增量...
在Oracle数据库中,物化视图和查询重写功能是提高查询效率和简化数据仓库管理的重要工具。物化视图是一种预计算的数据集合,它可以存储查询的结果集,而查询重写则允许数据库自动地使用这些物化视图来替换复杂的查询...
3. **刷新物化视图**:当刷新物化视图时,Oracle会根据每个物化视图的最后刷新时间,从物化视图日志中筛选出适用的记录,并根据这些记录来更新物化视图的内容。 通过这种方式,Oracle不仅能够实现单个物化视图的...
Oracle物化视图是数据库管理系统中的一个重要特性,尤其在处理大量数据和复杂查询的场景下,它可以极大地提升查询性能和数据一致性。物化视图与普通的视图不同,后者是逻辑上的虚表,其内容在查询时动态计算,而物化...
生产数据库中的基表会实时同步到报表数据库中的物化视图中,从而实现报表数据库和生产数据库的实时同步。 第四,报表数据库的优点。报表数据库的建立可以实现工作负荷的隔离,满足两种业务处理的需求,并为过渡到...
Oracle的物化视图是一种数据库对象,它存储了查询结果,从而提供了一种高效的数据访问方式。物化视图的主要目标是提升查询性能,尤其是在处理复杂查询、连接操作或聚合计算时。它们在数据仓库环境中尤其有用,因为...
本文主要研究 Oracle 物化视图增量刷新的应用,揭示了快速刷新技术在实际应用中的重要性。快速刷新采用增量刷新机制,基于日志挖掘原理,所有的刷新动作都是通过基表的物化视图日志来实现。快速刷新可分为自动刷新及...
物化视图是 Oracle 中的一种性能优化技术,它可以将复杂的查询结果存储在一个物化视图中,以便快速地检索数据。物化视图有三种刷新方式:COMPLETE、FAST 和 FORCE。 COMPLETE 刷新方式会删除表中所有的记录,然后...
### 物化视图在Oracle数据仓库中的应用与优化 #### 一、引言 在当今数据驱动的时代背景下,企业越来越依赖于数据仓库来进行决策支持系统(DSS)的构建,以便更好地理解业务趋势并做出战略性的分析。数据仓库的设计...
3. **嵌套物化视图**:在一个物化视图中包含了其他物化视图的结果,形成层次结构。 #### 五、物化视图应用场景 1. **提高查询性能**:对于经常执行的复杂查询,可以创建相应的物化视图来加速查询。 2. **减少资源...
刷新物化视图是指更新物化视图中的数据,以保持与源表的一致性。Oracle提供了几种不同的刷新方法: - **REFRESH FAST**:增量刷新,仅更新自上次刷新以来发生更改的部分数据。需要为主表创建物化视图日志。 - **...