用 DB2 说明工具深入理解物化查询表(MQT)刷新机制
2010-05-13 00:00:00 来源:WEB开发网REFRESH IMMEDIATE 方式
创建一个基表并插入若干数据,然后创建一个即时刷新的 MQT,使用的语句如清单 2 所示。
清单 2. 创建即时刷新的 MQT
create table basetable
(c1 int not null primary key, c2 int, c3 int, c4 int);
insert into basetable
values(1,1,1,1),(2,2,2,2),(3,3,3,3),(11,11,11,11);
create table mqttab as
(select c1, c2, c3 from basetable where c1 > 10)
data initially deferred refresh immediate;
set integrity for mqttab immediate checked not incremental;
在清单 2 中创建一个 MQT 名字是 mqttab,其数据是基表中 c1>10 的行并只取每一行的前三个 column。 需要说明一下的是,这个 MQT 非常的简单甚至于没有任何应用的价值,但是已经可以满足本文中所讨论问题的需求,这里我们的目标是探讨 MQT 的刷新机制,为了便于理解我们没有使用总结表等类型的 MQT。
上文中提到即时刷新的 MQT 能够始终保证数据都是最新的,也就是在任何对基表的 insert/update/delete 等操作时,MQT 中的数据也自动的进行相应的刷新。接下来我们设置 CURRENT EXPLAIN MODE,并向基表 basetable 中插入一条数据,这条数据满足 c1>10,然后来看这个操作的访问方案,使用的命令和访问方案如清单 3 所示。
清单 3. 基表的 insert 操作时的访问方案
db2 set current explain mode explain
db2 "insert into basetable values(12,12,12,12)"
db2exfmt -d MYDB -1 -e -o insert1.exfmt
db2 set current explain mode no
Rows
RETURN
( 1)
Cost
I/O
|
1
INSERT
( 2)
16.1648
2
/---+---\
1 1
INSERT TABLE: HQY
( 3) MQTTAB
8.0848 Q1
1
/---+---\
1 4
TBSCAN TABLE: HQY
( 4) BASETABLE
0.0048 Q4
0
|
1
TABFNC: SYSIBM
GENROW
2) INSERT: (Insert)
Input Streams:
-------------
4) From Operator #3
Estimated number of rows: 1
Number of columns: 3
Subquery predicate ID: Not Applicable
Column Names:
------------
+Q6.$C0+Q6.$C1+Q6.$C2
- ››db2 对float类型取char后显示科学计数法
- ››DB2中出现SQL1032N错误现象时的解决办法
- ››DB2 锁升级示例
- ››db2诊断系列之---定位锁等待问题
- ››db2 命令选项解释
- ››DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 基础: 表空间和缓冲池
- ››DB2 XML 编程,第 1 部分: 理解 XML 数据模型
- ››DB2 pureScale 实战
更多精彩
赞助商链接