DB2物化视图(Materialized Query Tables, MQT)

DB2的物化视图MQT是基于查询结果定义的一个表,MQT中包含的数据来自MQT定义所基于的一个或多个表, 使用MQT可以显著提高查询的操作性能。

数据库的视图和MQT都是基于一个查询来定义的。每当视图被引用时,视图所基于的查询便会运行。但MQT实际上会将查询结果存储为数据,您可以使用MQT中的这些数据,而不是使用底层表中的数据。

MQT 可以显著提高查询的性能,尤其是提高复杂查询的性能。如果优化器确定查询或查询的一部分可以用一个 MQT 来解决,那么查询就可以被重写以便利用 MQT。MQT 可以在创建表时定义,可以定义为由系统维护,也可以定义为由用户维护。

DATA INITIALLY DEFERRED 子句的意思是,在执行 CREATE TABLE 语句的时候,并不将数据插入到表中。
MQT 被创建好之后,就会处于检查暂挂(check pending)状态,在对它执行 SET INTEGRITY 语句之前,不能查询它。IMMEDIATE CHECKED 子句指定,必须根据用于定义该 MQT 的查询对数据进行检查,并刷新数据。NOT INCREMENTAL 子句指定对整个表进行完整性检查。

这种 MQT 中的数据是由系统维护的。当创建这种类型的 MQT 时,可以指定表数据是 REFRESH IMMEDIATE 还是 REFRESH DEFERRED。通过 REFRESH 关键字可以指定如何维护数据。DEFERRED 的意思是,表中的数据可以在任何时候通过 REFRESH TABLE 语句来刷新。

系统维护的 MQT,不管是 REFRESH DEFERRED 类型的还是 REFRESH IMMEDIATE 类型的,对它们的插入、更新或删除操作都是不允许的。但是,对于 REFRESH IMMEDIATE 类型的系统维护的 MQT,可以通过 对底层表的更改(即插入、更新或删除操作)来更新。

下面看一个例子

首先创建原始表

CREATE TABLE T (
   ID                INTEGER  NOT NULL,
   COL1              VARCHAR(128),
   COL2              VARCHAR(128),
   COL3              VARCHAR(128),
   COL4              VARCHAR(128),
   COL5              VARCHAR(128),
   PRIMARY KEY (ID)
) ORGANIZE BY ROW;

创建MQT表

CREATE TABLE T_MQT ( ID, COL1, COL2, COL3 )
AS ( select ID, COL1, COL2, COL3  from T )
DATA INITIALLY DEFERRED REFRESH IMMEDIATE MAINTAINED BY SYSTEM;
SET INTEGRITY FOR T_MQT IMMEDIATE CHECKED FULL ACCESS;

写入数据到原始表中

insert into T(ID, COL1, COL2, COL3, COL4, COL5) values (1, ‘col1‘, ‘col2‘, ‘col3‘, ‘col4‘, ‘col5‘);
insert into T(ID, COL1, COL2, COL3, COL4, COL5) values (2, ‘col1‘, ‘col2‘, ‘col3‘, ‘col4‘, ‘col5‘);

查询原始表和MQT表,会发现在MQT表里也有数据了

select * from T;
select * from T_MQT;

原文链接:DB2物化视图(Materialized Query Tables, MQT)

时间: 2024-10-09 04:19:36

DB2物化视图(Materialized Query Tables, MQT)的相关文章

详解Oracle数据货场中三种优化:分区、维度和物化视图

转 xiewmang 新浪博客 本文主要介绍了Oracle数据货场中的三种优化:对分区的优化.维度优化和物化视图的优化,并给出了详细的优化代码,希望对您有所帮助. 我们在做数据库的项目时,对数据货场的优化,大约的原理只有两个:一是数据分块储藏,便于数据的转储和管教:二是其中处理,长进数据供给的速度.本文主要介绍了Oracle数据货场中的三种优化:对分区的优化.维度优化和物化视图的优化,基上面两个大约的原理,借助于数据货场的观念,罗列数据库的优化措施:1.分区在数据货场中,事实表,索引表,维度表分

通过案例学调优之--跨库建立物化视图(Materialized View)

应用环境: 操作系统: RedHat EL55 Oracle:   Oracle 10gR2 一.物化视图概述 Oracle的物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表.物化视图存储基于远程表的数据,也可以称为快照. 物化视图可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果.物化视图有很多方面和索引很相似:使用物化视图的目的是为了提高查询性能:物化视图对应用透明

TimesTen与Materialized View(物化视图)

今天和用户交流,用户突然问到,TimesTen可否缓存多个Oracle的表,也即将多个表Join的结果缓存? 我们先做几个实验,然后再看有什么解决方法. TimesTen数据库对于物化视图的支持 先建立基础表和 Materialized View. CREATE TABLE customer(custId int not null, custName varchar(100) not null, Addr varchar(100), Zip int, Region varchar(10), PR

Oracle 10g通过创建物化视图实现不同数据库间表级别的数据同步

摘自:http://blog.csdn.net/javaee_sunny/article/details/53439980 目录(?)[-] Oracle 10g 物化视图语法如下 实例演示 主要步骤 在A节点创建原表和物化视图日志 在B节点创建连接A节点的远程链接 在B节点处创建目标表和与目标表名称相同的物化视图 在B节点处刷新物化视图 升级采用存储过程定时任务JOB方式定时刷新物化视图 进一步优化 文章更新记录 参考文章 Oracle 10g 物化视图语法如下: create materia

oracle物化视图

原文URL: oracle 10g物化视图简介 2012-05-09 17:33:55|  分类: ORACLE性能 |  标签:oracle  物化视图  |举报|字号 订阅 下载LOFTER我的照片书  | 环境oracle 10g 10.2.0.4  linux 64 要大而专业的看oracle自己的文档-sql参考. 说实话,oracle需要学习的内容太多,每个都看过去,实在太费事. 所以如果能够对物化视图有个概览,那最方便不过. 主要涉及内容 物化视图日志,用于快速刷新所必须的 物化视

[转载]oracle物化视图

原文URL:http://lzfhope.blog.163.com/blog/static/636399220124942523943/?suggestedreading&wumii 环境oracle 10g 10.2.0.4  linux 64 要大而专业的看oracle自己的文档-sql参考. 说实话,oracle需要学习的内容太多,每个都看过去,实在太费事. 所以如果能够对物化视图有个概览,那最方便不过. 主要涉及内容 物化视图日志,用于快速刷新所必须的 物化视图 权限,通常不是个难题,因

【PostgreSQL】物化视图

PostgreSQL 9.3 以后出现了物化视图.物化视图是由实实在在的数据组成,这是和一般视图的根本区别. 1. 物化视图创建语法如下: --创建语法 CREATE MATERIALIZED VIEW table_name [ (column_name [, ...] ) ] [ WITH ( storage_parameter [= value] [, ... ] ) ] [ TABLESPACE tablespace_name ] AS query [ WITH [ NO ] DATA ]

物化视图的刷新(转载)

转载源自于:http://czmmiao.iteye.com/blog/1827254 物化视图 物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表.物化视图存储基于远程表的数据,也可以称为快照.物化视图可以基于表查询,视图和其它的物化视图.通常情况下,在复制环境下,物化视图被称为主表,在数据仓库中称为明细表.对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的.如果你想修改本地副本,必须用高级复制的功能.当你想从一个表或视图中抽取

oracle中使用物化视图实现表的同步

表的同步可以使用物化视图来实现,可以是同库的也可以是不同数据库之间进行数据同步,建议在同库的数据同步可以使用实时的同步,如果使用db link建议使用增量的刷新方式,防止dblink导致原库的性能急剧下降. 主要步骤: 1.在原表上建立物化视图日志 2.在创建目标表 3.创建与目标表同名的物化视图日志 1.创建原表和物化视图日志 SQL> conn bre/bre Connected. SQL> create table t1(id int,name varchar2(30)); Table