`
kidiaoer
  • 浏览: 821908 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

物化视图相关

阅读更多
物化视图

物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。

       物化视图可以查询表,视图和其它的物化视图。

       通常情况下,物化视图被称为主表(在复制期间)或明细表(在数据仓库中)。

       对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的。如果你想修改本地副本,必须用高级复制的功能。当你想从一个表或视图中抽取数据时,你可以用从物化视图中抽取。

       对于数据仓库,创建的物化视图通常情况下是聚合视图,单一表聚合视图和连接视图。

本篇我们将会看到怎样创建物化视图并且讨论它的刷新选项。

       在复制环境下,创建的物化视图通常情况下主键,rowid,和子查询视图。

1.主键物化视图:

              下面的语法在远程数据库表emp上创建主键物化视图

        SQL> 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选项创建物化视图,必须创建基于主表的视图日志,如下:

            SQL> CREATE MATERIALIZED VIEW LOG ON emp;

            Materialized view log created.

2.Rowid物化视图

              下面的语法在远程数据库表emp上创建Rowid物化视图

      SQL> CREATE MATERIALIZED VIEW mv_emp_rowid

            REFRESH WITH ROWID

             AS SELECT * FROM emp@remote_db;

            Materialized view log created.

3.子查询物化视图

              下面的语法在远程数据库表emp上创建基于emp和dept表的子查询物化视图

            SQL> 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 子句说明了刷新的间隔时间.

            SQL> 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物化视图应用详解

    Oracle物化视图是一种数据库对象,它存储了查询结果,以提供快速的数据访问,特别适合于需要频繁查询但计算过程复杂或涉及大量数据连接的场景。物化视图的使用可以显著提高查询性能,因为它避免了每次查询时的计算...

    PostgreSQL物化视图的刷新机制.pptx

    物化视图可以分为四种类型:快照物化视图、积极物化视图、消极物化视图和非常消极物化视图。 为什么使用物化视图?在执行某些查询时,效率较低,传统方法(例如,索引或查询优化)无法显著提高效率。这时使用的方法...

    Oracle数据库中物化视图的原理剖析

    Oracle数据库中的物化视图(Materialized View,简称MV)是一种强大的优化工具,它通过预先计算并存储查询结果,提供了一种快速访问复杂查询数据的方式。这种技术在数据仓库环境中尤其有用,因为数据仓库通常涉及...

    ORACLE9I物化视图

    ### ORACLE9I 物化视图 #### 执行概览 随着数据库技术的发展,无论是数据仓库、数据集市还是在线事务处理(OLTP)系统,都承载着大量的等待被发现和理解的信息。然而,在海量数据中及时准确地查找并呈现这些信息...

    oracle物化视图_循序渐进学习笔记

    在本篇循序渐进的学习笔记中,我们将深入探讨物化视图的概念、用途、刷新机制及其相关问题。 首先,我们需要了解几个关键术语。基表是创建物化视图时引用的原始数据表或视图,而物化视图(MView)则是基于这些基表...

    物化视图的快速刷新

    物化视图的快速刷新 物化视图是 Oracle 中的一种性能优化技术,它可以将复杂的查询结果存储在一个物化视图中,以便快速地检索数据。物化视图有三种刷新方式:COMPLETE、FAST 和 FORCE。 COMPLETE 刷新方式会删除表...

    物化视图普通视图区别,很不错的资料

    物化视图与普通视图是数据库中两种不同的视图类型,它们在功能和使用上有显著的区别。普通视图,也称为虚拟视图,是一种逻辑上的表,它并不实际存储数据,而是根据定义的SQL查询在运行时动态生成结果。这意味着每次...

    Oracle物化视图创建和使用

    Oracle 物化视图创建和使用 Oracle 物化视图是一种预先计算并保存表连接或聚集等耗时较多的操作的结果,以提高查询性能。物化视图对应用程序透明,不会影响应用程序的正确性和有效性,但需要占用存储空间。基表发生...

    SQL 优化之 oracle物化视图

    Oracle 物化视图 Oracle 物化视图是数据库对象,存储远程表的数据副本,也可以称为快照。物化视图可以查询表、视图和其他物化视图。通常情况下,物化视图被称为主表(在复制期间)或明细表(在数据仓库中)。 创建...

    物化视图的两种实现

    物化视图是数据库系统中一个非常重要的特性,它提供了预计算和存储查询结果的方式,以提高数据查询的效率。物化视图可以看作是虚拟视图的实体化版本,其内容是从一个或多个表中通过特定的SQL查询生成的。在实际应用...

    MySQL中实现物化视图

    真正值得一看的mysql知识。MySQL中实现物化视图(中文版)翻译于外文。

    表分区及物化视图

    orace表分区及物化视图 进一步了解oracle表分区技术及物化视图技术应用

    物化视图,数据仓库,Oracle

    ### 物化视图在Oracle数据仓库中的应用与优化 #### 一、引言 在当今数据驱动的时代背景下,企业越来越依赖于数据仓库来进行决策支持系统(DSS)的构建,以便更好地理解业务趋势并做出战略性的分析。数据仓库的设计...

    oracle 物化视图详解(内含例子)

    ### Oracle 物化视图详解 #### 一、物化视图的概念与作用 物化视图是Oracle数据库中一种特殊的数据对象,它保存的是基于一个或多个表(称为基表)的查询结果集,并且这些结果集是物理上存在的。与普通的视图不同,...

    Oracle物化视图使用[文].pdf

    Oracle物化视图是数据库管理系统中的一个重要特性,尤其在处理大量数据和复杂查询的场景下,它可以极大地提升查询性能和数据一致性。物化视图与普通的视图不同,后者是逻辑上的虚表,其内容在查询时动态计算,而物化...

    Oracle怎么根据物化视图日志快速刷新物化视图

    ### Oracle如何根据物化视图日志快速刷新物化视图 #### 一、物化视图及其日志介绍 在Oracle数据库中,物化视图(Materialized View)是一种特殊的对象,它存储了预计算查询的结果,从而可以提高查询性能。物化视图...

    物化视图创建脚本物化视图创建脚本

    物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建

    创建物化视图ORA-12014错误解决方法

    ### 创建物化视图ORA-12014错误解决方法 #### 背景介绍 在Oracle数据库中,物化视图(Materialized View)是一种用于优化查询性能的重要工具。它预先计算并存储了复杂的查询结果,从而在实际查询时能够快速地返回...

    1-5+Doris物化视图、索引的典型应用案例.pdf

    Doris 物化视图和索引的典型应用案例 Doris 是一个开源的分布式分析型数据库,旨在帮助用户快速处理海量数据,提供了物化视图和索引等功能,以提高查询性能和数据的一致性。下面将详细介绍 Doris 的物化视图和索引...

    利用ORACLE物化视图建立报表数据库.pdf

    "利用ORACLE物化视图建立报表数据库.pdf" 本文主要介绍了利用ORACLE物化视图建立报表数据库的方法和原理。报表数据库是指独立于生产数据库的数据库,用于存储和管理报表数据。通过建立报表数据库,可以实现工作负荷...

Global site tag (gtag.js) - Google Analytics