`

Materialized View

 
阅读更多

Oracle的实体化视图提供了强大的功能,可以用在不同的环境中,实体化视图和表一样可以直接进行查询。实体化视图可以基于分区表,实体化视图本身也可以分区

主要用于预先计算并保存表连接或聚集等耗时较多的操作的结果 , 这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。在数据仓库中,还经常使用查询重写(query rewrite)机制,这样不需要修改原有的查询语句,Oracle会自动选择合适的实体化视图进行查询,完全对应用透明。实体化视图和表一样可以直接进 行查询。

实体化视图还用于复制、移动计算,远程同步等方面。

实体化视图有很多方面和索引很相似:使用实体化视图的目的是为了提高查询性能;实体化视图对应用透明,增加和删除实体化视图不会影响应用程序中SQL语句的正确性和有效性;实体化视图需要占用存储空间;当基表发生变化时,实体化视图也应当刷新。 
materialized view 同snapshot是同一个概念。但同view是不一样的: 
   1)物化视图是存储数据的视图,存储了基础表的全部或者一部分数据,主要用作sql语句的优化,查询物化视图比查询表中的数据速度要快; 
   2)MV是自动刷新或者手动刷新的,View不用刷新; 
   3) MV也可以直接update,但是不影响base table,对View的update反映到base table上; 
   4)MV主要用于远程数据访问,mv中的数据需要占用磁盘空间,view中不保存数据 

 

使用语法:

CREATE MATERIALIZED VIEW XX

  REFRESH   [[fast | complete | force] 
         [on demand | commit] 
         [start with date] 
         [next date] 
         [with {primary key | rowid}] 
       ]

      [ENABLE | DISABLE] QUERY REWRITE

  Refresh 刷新子句 
   描述 当基表发生了DML操作后,实体化视图何时采用哪种方式和基表进行同步 
   取值 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的实体化视图。主键实体化视图允许识别实体化视图表而不影响实体化视图增量刷新的可用性 

 

REWRITE 字句

包括ENABLE QUERY REWRITE和DISABLE QUERY REWRITE两种。

分别指出创建的实体化视图是否支持查询重写。查询重写是指当对实体化视图的基表进行查询时,Oracle会自动判断能否通过查询实体化视图来得到结果,如果可以,则避免了聚集或连接操作,而直接从已经计算好的实体化视图中读取数据 
  默认 DISABLE QUERY REWRITE 

 

例子:

首先创建表

CREATE TABLE my_tables AS
SELECT DBA_TABLES.* FROM DBA_TABLES;

CREATE TABLE my_indexes AS
SELECT DBA_INDEXES.*
  FROM DBA_TABLES, DBA_INDEXES
 WHERE DBA_TABLES.OWNER = DBA_INDEXES.table_owner
   AND DBA_TABLES.TABLE_NAME = DBA_INDEXES.table_name

创建簇

CREATE CLUSTER my_cluster(index_type VARCHAR2 (30))

SIZE 8192 HASHKEYS 5;

创建MV

CREATE MATERIALIZED VIEW my_mv
CLUSTER my_cluster(index_type)
REFRESH FAST ON COMMIT
ENABLE QUERY REWRITE
AS
  SELECT t.ROWID AS table_rowid,
  t.owner AS table_owner,
  t.tablespace_name,
  i.rowId AS index_rowId,
  i.index_type
  FROM my_tables t,
  my_indexes i
  WHERE t.owner = i.table_owner
    AND t.table_name = i.table_name;

 

分享到:
评论

相关推荐

    PostgreSQL物化视图(materialized view)过程解析

    这篇文章主要介绍了PostgreSQL物化视图(materialized view)过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1、创建视图 CREATE MATERIALIZED VIEW ...

    materialized_view基础知识

    materialized_view基础知识

    视图上触发器 & Materialized View 物化视图

    NULL 博文链接:https://wuaner.iteye.com/blog/686899

    tune materialized view

    dbms_advisor.tune_mview使用的例子

    oracle materialized view

    物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照(声名:本人刚刚学习物化视图这篇文章来自网络感觉有借鉴...

    MariaDB-Materialized-View

    MariaDB材质化视图这是一个示例,说明如何在MariDB中创建和使用实例化视图。

    oracle view

    introduction of oracle Materialized view

    greenplum-db-6.2.1-rhel7-x86_64.rpm

    To refresh the materialized view data, use the REFRESH MATERIALIZED VIEW command. See Creating and Managing Materialized Views. Note: Known Issues and Limitations describes a limitation of ...

    oracle cdc教程

    主要的 ETL 方案,一种是我们熟悉的物化视图(materialized view),另一种就是本文将要 介绍的 CDC 组件(Change Data Capture 改变数据捕获)。 CDC 特性是在 Oracle9i 数据库中引入的。CDC 能够帮助你识别从上次提取...

    PostgresQL-Materialized-View-Demo:PostgresQL中物化视图的演示脚本

    Postgres物化视图演示 设置 在您的机器上安装了postgresql 运行脚本 createdb your_database psql -f setup_scripts/00_setup.sql psql -d your_database 如果需要更多种子数据, bundle exec ruby dev.rb以为...

    Rails, Angular, Postgres, and Bootstrap(Pragmatic,2016)

    You’ll create complex interfaces using Bootstrap’s grid, together with Angular’s form support, backed by a materialized view for caching within Postgres. You’ll get your front-end working with ...

    最完整的Toad For Oracle使用手册

    Materialized View (Snapshot) Logs 940 Oracle Scheduler 941 Packages 953 Policies 955 Policy Groups 956 Procedures 957 Profiles 959 Queue Tables 960 Queues 964 Recycle Bin 966 Refresh Groups 968 ...

    Cloud Design Patterns

    Materialized View Pattern Chapter 15. Pipes and Filters Pattern Chapter 16. Priority Queue Pattern Chapter 17. Queue-Based Load Leveling Pattern Chapter 18. Retry Pattern Chapter 19. Runtime ...

    Oracle9i Database Error Messages

    24 Summary Advisor, Explain Rewrite, and Explain Materialized View Messages (QSM) 25 Recovery Manager Messages (RMAN) Part IV Core Library Messages 26 Parameter Messages (LRM) 27 BFILE-Related ...

    enterprise_rails.pdf

    Materialized View Principles 156 A View to Materialize 157 Getting into Form 158 The Target Table 160 Refresh and Invalidation Functions 161 Time Dependency 163 Who Pays the Price? 165 Triggered ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。...

    rethinkdb-view:关于如何在 rethinkDB 中实现 SQL VIEWMATERIALIZED VIEW 概念的思路

    这只是关于如何在 rethinkDB 中重现 SQL VIEW/MATERIALIZED VIEW 功能的一系列想法。 设置 您需要以下软件: RethinkDB(从下载)。 安装并启动它(命令是全局的,但请记住使用测试数据目录,例如rethinkdb -d /...

    Oracle8i_9i数据库基础

    §4.2 实体视图(MATERIALIZED VIEW) 131 §4.2.1 创建实体视图 131 §4.2.2 创建实体视图日志 137 §4.2.3 修改实体视图 139 §4.2.4 修改实体视图日志 141 §4.2.45 实体视图完整例子 142 §4.3 序号(sequence) 146...

    数据库基础

    §4.2 实体视图(MATERIALIZED VIEW) 131 §4.2.1 创建实体视图 131 §4.2.2 创建实体视图日志 137 §4.2.3 修改实体视图 139 §4.2.4 修改实体视图日志 141 §4.2.45 实体视图完整例子 142 §4.3 序号(sequence) 146...

Global site tag (gtag.js) - Google Analytics