设为首页 加入收藏

TOP

DB2物化查询表(MQT)刷新机制(四)
2014-11-23 22:04:35 来源: 作者: 【 】 浏览:38
Tags:DB2 物化 查询表 MQT 新机制
pe 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.
在清单 10 的最后描述了登台表 mqttab3_stg 的表结构,可以看到登台表中包括了 MQT mqttab3 的所有的列,也就是说登台表能够捕捉基表的变化并保存更新 MQT 所需的所有数据。
我们来看一下,同样是延迟更新,有了登台表之后会有什么样的变化。设置 CURRENT EXPLAIN MODE,向基表 basetab3 中插入一条数据然后来看这个操作的访问方案,使用的命令和得到的访问方案如清单 11 所示。
清单 11. 基表的 insert 操作时的访问方案
db2 set current explain mode explain
db2 "insert into basetab3 values(12,12,12,12)"
db2exfmt -d MYDB -1 -e -o insert3.exfmt
db2 set current explain mode no
Rows
RETURN
( 1)
Cost
I/O
|
1
INSERT
( 2)
16.236
2
/---+---\
1 58
INSERT TABLE: HQY
( 3) MQTTAB3_STG
8.0848 Q1
1
/---+---\
1 1000
TBSCAN TABLE: HQY
( 4) BASETAB3
0.0048 Q4
0
|
1
TABFNC: SYSIBM
GENROW
在清单 11 中我们得到了一个与清单 7 完全不同却与清单 3 十分类似的访问方案。清单 3 中的 MQT 采用即时刷新方式,对基表 insert 操作时同时向 MQT mqttab 进行了操作,而在清单 11 中的 MQT 采用的是延迟刷新方式,在访问方案中唯一的差别是其没有同时更新 MQT,而是同时对登台表进行了操作。
接下来我们来看对基表的 update 和 delete 操作时的访问方案,使用的命令如清单 12 所示。
清单 12. 基表的 update 和 delete 操作
db2 set current explain mode explain
db2 "update basetab2 set c2=100 where c1=11"
db2exfmt -d MYDB -1 -e -o update2.exfmt
db2 "delete from basetab2 where c1=11"
db2exfmt -d MYDB -1 -e -o delete2.exfmt
db2 set current explain mode no
同样的我们可以发现,对基表的 update 和 delete 操作时的访问方案也没有对 MQT 的刷新操作,而是对登台表进行了相应的操作。读者可以在本文最后的下载链接中找到 update3.exfmt 和 delete3.exfmt 中的访问方案,限于篇幅不在正文部分显示。
最后,我们来看一下当用户手动的刷新 MQT 时其执行方案,使用的命令和访问方案如清单 13 所示。
清单 13. 手动刷新采用延迟更新方式并有登台表的 MQT
db2 "insert into basetab3 values(12,12,12,12)"
db2 "insert into basetab3 values(13,12,12,12)"
db2 "insert into basetab3 values(14,12,12,12)"
db2 "insert into basetab3 values(15,12,12,12)"
db2 "update basetab3 set c2=100 where c1=11"
db2 runstats on table hqy.basetab3
db2 set current explain mode explain
db2 "refresh table mqttab3"
db2exfmt -d MYDB -1 -e -o refresh3.exfmt
db2 set current explain mode no
Rows
RETURN
( 1)
Cost
I/O
|
0.333333
FILTER
( 2)
514.308
61.0015
+------------+------+-------------------+
1 0 8.02174e-07
TBSCAN FILTER INSERT
( 3) ( 4) ( 6)
0.0048 0.076 514.124
0 0 61.0015
| | /----+-----\
1 1 8.02174e-07 1000
TABFNC: SYSIBM TBSCAN FILTER TABLE: HQY
GENROW ( 5) ( 7) MQTTAB3
0.0048 506.044 Q6
0 60.0015
| |
1
首页 上一页 1 2 3 4 5 下一页 尾页 4/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇使用DB2对象:创建模式、表和视图 下一篇DB2中包含BLOB字段表数据的导入导..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: