WEB开发网
开发学院数据库DB2 用 DB2 说明工具深入理解物化查询表(MQT)刷新机... 阅读

用 DB2 说明工具深入理解物化查询表(MQT)刷新机制

 2010-05-13 00:00:00 来源:WEB开发网   
核心提示: 在清单 11 中我们得到了一个与清单 5 中完全不同而且比较复杂的访问方案,在本文中不会详细解释该访问方案的具体细节,用 DB2 说明工具深入理解物化查询表(MQT)刷新机制(8),通过观察发现在这个访问方案中对 MQT mqttab2 执行了 INSERT 操作(操作符 6)和 DELETE

在清单 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. 

上一页  3 4 5 6 7 8 9 10  下一页

Tags:DB 说明 工具

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接