`
IT4CAT
  • 浏览: 25265 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle-物化视图

阅读更多

Oracle-物化视图

介绍:oracle物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的。如果你想修改本地副本,必须用高级复制的功能。当你想从一个表或视图中抽取数据时,你可以用从物化视图中抽取。对于数据仓库,创建的物化视图通常情况下是聚合视图,单一表聚合视图和连接视图。物化视图可以查询表,视图和其它的物化视图。

1 关于物化视图日志

查询物化视图日志文件格式:desc mlog$_test;

创建物化视图时默认指定物化视图中存在主键,如果不指定,那么创建的物化视图日志文件的基表必须存在主键,否则会报错

Demo:对一个表test

创建日志:create materialized view log on test;

那么会报:表'TEST'不包含主键约束条件

这种情况下,就必须指定日志文件结构

比如:create materialized view log on test with rowid

2关于生成数据和刷新

2.1 生成数据

两大选项:build immediate   build deferred

Build immediate:在创建物化视图的同时根据主表生成数据

Bulid deferred:在创建物化视图的同时,在物化视图内不生成数据,如果此时没有生成数据,以后可以利用oracle自带的过程进行相应的调用,采取:EXEC DBMS_MVIEW.Refresh(‘MV_name’,’C’),注意必须使用全量刷新,默认(不带参数)是增量刷新,所以这里参数必须是C,因为之前都没有生成数据,所以必须全量。

2.2 关于刷新

2.2.1刷新方式complete fast force

Complete :完全刷新整个物化视图,相当于重新生成物化视图,此时即时增量刷新可用也全量刷新

l  Fast:当有数据更新时依照相应的规则对物化视图进行更新(此时必须创建物化视图日志(物化视图日志记录了数据更新的日志),关于日志的说明,参照“物化视图日志文件介绍”)

l  Force:当增量刷新可用则增量刷新,当增量刷新不可用,则全量刷新(此项为默认选项)不过从实际情况出发,应该尽量不使用默认选项,可以考虑使用增量刷新,对大表特别有效,大表全量更新速度是非常慢的,特别是在存在索引的情况下(在创建物化视图语句中,可能某些限制查询的条件,导致了增量刷新无法使用,这个是需要注意的,具体是哪类语句导致fast刷新不可用,有待总结…..

2.2.2刷新时间:on demand on commit start with/ next

On demand:在需要刷新时进行刷新(人工判断)

On commit:在基表上有提交操作时,进行更新

Start with:指定首次刷新的时间(一般指定的是当前时间,不过也可以在创建物化视图时不生成数据,则可以考虑在指定的时间刷新,从而生成数据)

Next:刷新的周期时间

3  基于主键的物化视图和ROWID的物化视图的说明

创建物化视图日志时,指定了记录更新的原则即with 后面的primary 或者rowid 或者object id等等,后面,默认是以primary key为记录更新,在物化视图内也是以此为更新的原则。

4 关于物化视图存放的的表空间

直接在创建物化视图时指定日志存放的表空间和物化视图的表空间。

例子:create materialized view MV_TEST tablespace test ----表空间名称

5 关于查询重写和更新

在创建查询重写时,基表中必须有主键约束,视图里是无法创建主键的,不过其继承了基表的主键约束。(关于视图的创建的一些技巧有待总结……)下面给个例子

Create materialized view MVTEST

Refresh fast ----前提是必须创建基表日志,可以忽略该项

Enable query rewrite ----前提是基表上必须存在主键约束

As

Select * from TEST; ----物化视图数据生成

6 关于创建物化视图的例子

6.1 使用增量刷新的物化视图的写法

创建物化视图日志,必须创建日志

Create materialized view log on TEST ----TEST为表名

----注:(TEST为表名或者视图名,关于视图上建立物化视图,见基于视图的物化视图

----创建物化视图语句:

Create materialized view MVTEST

----MVTEST为物化视图名

Build immediate

----创建时生成数据对应的是build deferred

Refresh fast

----增量刷新

On commit

----在基表有更新时提交,这里该句对视图无效

With rowid

----这里创建基于rowid的物化视图,对应的是 primary key

As

Select * from TEST;

----生成物化视图数据语句

SQL> create materialized view mvtest build immediate refresh fast on commit as select * from test;

Oracle-物化视图

介绍:oracle物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的。如果你想修改本地副本,必须用高级复制的功能。当你想从一个表或视图中抽取数据时,你可以用从物化视图中抽取。对于数据仓库,创建的物化视图通常情况下是聚合视图,单一表聚合视图和连接视图。物化视图可以查询表,视图和其它的物化视图。

1 关于物化视图日志

查询物化视图日志文件格式:desc mlog$_test;

创建物化视图时默认指定物化视图中存在主键,如果不指定,那么创建的物化视图日志文件的基表必须存在主键,否则会报错

Demo:对一个表test

创建日志:create materialized view log on test;

那么会报:表'TEST'不包含主键约束条件

这种情况下,就必须指定日志文件结构

比如:create materialized view log on test with rowid

2关于生成数据和刷新

2.1 生成数据

两大选项:build immediate   build deferred

Build immediate:在创建物化视图的同时根据主表生成数据

Bulid deferred:在创建物化视图的同时,在物化视图内不生成数据,如果此时没有生成数据,以后可以利用oracle自带的过程进行相应的调用,采取:EXEC DBMS_MVIEW.Refresh(‘MV_name’,’C’),注意必须使用全量刷新,默认(不带参数)是增量刷新,所以这里参数必须是C,因为之前都没有生成数据,所以必须全量。

2.2 关于刷新

2.2.1刷新方式complete fast force

Complete :完全刷新整个物化视图,相当于重新生成物化视图,此时即时增量刷新可用也全量刷新

l  Fast:当有数据更新时依照相应的规则对物化视图进行更新(此时必须创建物化视图日志(物化视图日志记录了数据更新的日志),关于日志的说明,参照“物化视图日志文件介绍”)

l  Force:当增量刷新可用则增量刷新,当增量刷新不可用,则全量刷新(此项为默认选项)不过从实际情况出发,应该尽量不使用默认选项,可以考虑使用增量刷新,对大表特别有效,大表全量更新速度是非常慢的,特别是在存在索引的情况下(在创建物化视图语句中,可能某些限制查询的条件,导致了增量刷新无法使用,这个是需要注意的,具体是哪类语句导致fast刷新不可用,有待总结…..

2.2.2刷新时间:on demand on commit start with/ next

On demand:在需要刷新时进行刷新(人工判断)

On commit:在基表上有提交操作时,进行更新

Start with:指定首次刷新的时间(一般指定的是当前时间,不过也可以在创建物化视图时不生成数据,则可以考虑在指定的时间刷新,从而生成数据)

Next:刷新的周期时间

3  基于主键的物化视图和ROWID的物化视图的说明

创建物化视图日志时,指定了记录更新的原则即with 后面的primary 或者rowid 或者object id等等,后面,默认是以primary key为记录更新,在物化视图内也是以此为更新的原则。

4 关于物化视图存放的的表空间

直接在创建物化视图时指定日志存放的表空间和物化视图的表空间。

例子:create materialized view MV_TEST tablespace test ----表空间名称

5 关于查询重写和更新

在创建查询重写时,基表中必须有主键约束,视图里是无法创建主键的,不过其继承了基表的主键约束。(关于视图的创建的一些技巧有待总结……)下面给个例子

Create materialized view MVTEST

Refresh fast ----前提是必须创建基表日志,可以忽略该项

Enable query rewrite ----前提是基表上必须存在主键约束

As

Select * from TEST; ----物化视图数据生成

6 关于创建物化视图的例子

6.1 使用增量刷新的物化视图的写法

创建物化视图日志,必须创建日志

Create materialized view log on TEST ----TEST为表名

----注:(TEST为表名或者视图名,关于视图上建立物化视图,见基于视图的物化视图

----创建物化视图语句:

Create materialized view MVTEST

----MVTEST为物化视图名

Build immediate

----创建时生成数据对应的是build deferred

Refresh fast

----增量刷新

On commit

----在基表有更新时提交,这里该句对视图无效

With rowid

----这里创建基于rowid的物化视图,对应的是 primary key

As

Select * from TEST;

----生成物化视图数据语句

SQL> create materialized view mvtest build immediate refresh fast on commit as select * from test;

 

分享到:
评论

相关推荐

    ORACLE9i-分析函数参考手册-物化视图-Flashback Query.doc

    ORACLE9i-分析函数参考手册-物化视图-Flashback Query.doc

    ORACLE9I物化视图

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

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

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

    Oracle物化视图应用详解

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

    Oracle物化视图创建和使用

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

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

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

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

    Oracle物化视图是一种在数据库中预先计算并存储视图查询结果的数据对象,它与普通的视图不同,普通视图在查询时动态地基于基表数据生成结果,而物化视图则拥有自己的物理存储,提供了对数据的快速访问。在本篇循序渐...

    SQL 优化之 oracle物化视图

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

    ORACLE使用物化视图和查询重写功能

    ### ORACLE使用物化视图和查询重写功能 #### 一、概述 在Oracle数据库中,物化视图和查询重写功能是提高查询效率和简化数据仓库管理的重要工具。物化视图是一种预计算的数据集合,它可以存储查询的结果集,而查询...

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

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

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

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

    oracle的物化视图

    Oracle的物化视图是一种数据库对象,它存储了查询结果,从而提供了一种高效的数据访问方式。物化视图的主要目标是提升查询性能,尤其是在处理复杂查询、连接操作或聚合计算时。它们在数据仓库环境中尤其有用,因为...

    Oracle物化视图增量刷新的应用研究.pdf

    "Oracle 物化视图增量刷新的应用研究" Oracle 物化视图是 Oracle 公司提供的一种新技术,可以解决很多普通逻辑视图无法完成的功能。物化视图操作简单,支持增量刷新及全量刷新,可以支持复杂的表连接、聚合函数等...

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

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

    物化视图,数据仓库,Oracle

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

    物化视图的快速刷新

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

    Oracle中物化视图的使用.pdf

    Oracle中的物化视图是一种非常重要的数据库特性,它主要用于提高查询性能和数据一致性。物化视图是预先计算好的查询结果,存储为物理表的形式,这样在后续的查询中可以直接使用,而不需要每次都执行复杂的查询操作。...

Global site tag (gtag.js) - Google Analytics