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

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

 2010-05-13 00:00:00 来源:WEB开发网   
核心提示: 在清单 11 中我们得到了一个与清单 7 完全不同却与清单 3 十分类似的访问方案,清单 3 中的 MQT 采用即时刷新方式,用 DB2 说明工具深入理解物化查询表(MQT)刷新机制(10),对基表 insert 操作时同时向 MQT mqttab 进行了操作,而在清单 11 中的 MQT 采用

在清单 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       0.000501359 
       TABFNC: SYSIBM      DELETE 
          GENROW       (  8) 
                    506.044 
                    60.0015 
                  /----+-----\ 
               0.000501359    1000 
                UPDATE   TABLE: HQY 
                (  9)     MQTTAB3 
                506.04      Q7 
                60.001 
               /----+-----\ 
            0.000501359    1000 
             FETCH   TABLE: HQY 
             ( 10)     MQTTAB3 
             506.036     Q8 
             60.0005 
           /----+-----\ 
        0.000501359    1000 
         TBSCAN   TABLE: HQY 
         ( 11)     MQTTAB3 
         505.995 
          60 
          | 
        0.000501359 
         TEMP 
         ( 12) 
         504.729 
          60 
          | 
        0.000501359 
         >^NLJOIN 
         ( 13) 
         504.271 
          60 
        /----+-----\ 
     0.000501359    40 
      FILTER     TBSCAN 
      ( 14)     ( 20) 
      491.357    144.813 
       59       7 
       |       | 
     0.000501359    1000 
      FILTER   TABLE: HQY 
      ( 15)     MQTTAB3 
      491.168     Q19 
       59 
       | 
       58 
      TBSCAN 
      ( 16) 
      487.826 
       59 
       | 
       58 
      SORT 
      ( 17) 
      487.184 
       59 
       | 
       58 
      DELETE 
      ( 18) 
      482.288 
       59 
     /---+----\ 
    58      58 
   TBSCAN  TABLE: HQY 
   ( 19)   MQTTAB3_STG 
   13.6476    Q9 
    1 
    | 
    58 
 TABLE: HQY 
  MQTTAB3_STG 
    Q10 

在清单 13 中我们看到了一个非常复杂的访问方案,限于篇幅不能详细的解释,简要的说,在这个访问方案中,首先读取了登台表 mqttab3_stg 并删除了登台表的数据(DELETE 操作符 18),接着用登台表中读取的数据与 MQT mqttab3 进行合并(NLJOIN 操作符 13)并放入临时表中(TEMP 操作符 12),然后根据临时表中的数据对 MQT mqttab3 依次进行了更新(UPDATE 操作符 9)、删除(DELETE 操作符 8)和插入(INSERT 操作符 6)。在整个过程中没有任何用到基表 basetab3 的操作,这就说明此时的刷新是完全基于登台表 mqttab3_stg 进行的延迟刷新。

至此,我们已经通过访问方案理解了 MQT 的即时刷新方式、延迟刷新方式以及有登台表的延迟刷新方式的特点和机制,读者还可以继续深入探讨其他情景,如定义复杂的 MQT(如使用 COUNT 和 GROUP BY),或者使用 LOAD 装载数据等情景的各种刷新方式。

总结

在文中介绍了 MQT的刷新方式并利用说明工具获取其访问方案,使读者能够较为深入的理解这些刷新方式,从而能够在实际应用中选择合适的刷新方式,更大程度的提高应用系统的性能。

上一页  5 6 7 8 9 10 

Tags:DB 说明 工具

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