用 DB2 说明工具深入理解物化查询表(MQT)刷新机制
2010-05-13 00:00:00 来源:WEB开发网在清单 11 中我们得到了一个与清单 5 中完全不同而且比较复杂的访问方案,在本文中不会详细解释该访问方案的具体细节,通过观察发现在这个访问方案中对 MQT mqttab2 执行了 INSERT 操作(操作符 6)和 DELETE 操作(操作符 9),其中 INSERT 操作的输入是 FETCH(操作符 7)也就是从基表 basetab2 中获取数据并插入到 mqttab2 中,DELETE 操作的输入是 TBSCAN( 操作符 10) 也就是从 MQT mqttab2 中找到相应的数据进行删除。这个过程就是根据基表的最新数据向 MQT 中插入新数据或者删除无效的数据,这也是为什么只有 INSERT 操作和 DELETE 操作而没有 UPDATE 操作。
至此,我们已经通过访问方案理解了 MQT 的延迟刷新方式,接下来我们继续讨论当有登台(staging)表时的 MQT 延迟刷新方式。
有登台表的 REFRESH DEFERRED 方式
创建一个基表并插入若干数据,然后创建一个延迟刷新的 MQT,并创建一个登台表,基表和 MQT 的表结构与上文相同,差别在于这里创建了登台表 mqttab3_stg,也由此需要多执行一条 SET INTEGRITY 命令,使用的语句如清单 10 所示。
清单 10. 创建延迟刷新的 MQT 并创建登台表
create table basetab3
(c1 int not null primary key, c2 int, c3 int, c4 int);
insert into basetab3
values(1,1,1,1),(2,2,2,2),(3,3,3,3),(11,11,11,11);
create table mqttab3 as
(select c1, c2, c3 from basetab3 where c1 > 10)"
data initially deferred refresh deferred;
create table mqttab3_stg for mqttab3 propagate immediate;
set integrity for mqttab3 materialized query immediate unchecked;
set integrity for mqttab3_stg staging immediate unchecked;
db2 describe table hqy.MQTTAB3_STG
Data type Column
Column name schema Data type name Length Scale Nulls
---------- ------- ----------- ------- ----- ------
C1 SYSIBM INTEGER 4 0 No
C2 SYSIBM INTEGER 4 0 Yes
C3 SYSIBM INTEGER 4 0 Yes
GLOBALTRANSID SYSIBM CHARACTER 8 0 No
GLOBALTRANSTIME SYSIBM CHARACTER 13 0 No
OPERATIONTYPE SYSIBM INTEGER 4 0 No
6 record(s) selected.
- ››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 实战
更多精彩
赞助商链接