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

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

 2010-05-13 00:00:00 来源:WEB开发网   
核心提示: REFRESH IMMEDIATE 方式创建一个基表并插入若干数据,然后创建一个即时刷新的 MQT,用 DB2 说明工具深入理解物化查询表(MQT)刷新机制(3),使用的语句如清单 2 所示,清单 2. 创建即时刷新的 MQTcreatetablebasetable(c1intnotnullpr

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 

上一页  1 2 3 4 5 6 7 8  下一页

Tags:DB 说明 工具

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