开发一个系统基本完毕的时候,为了提高系统的响应时间,我们需要把经常从数据库获取而又不经常修改的内容给缓存起来,但是,缓存起来,我们怎么知道是否缓存生效了,没从数据库去取呢?
对于DB2 V8.1数据库,它提供了一个数据库监视器开关,可以监视系统访问数据库里表的记录。
首先,db2cmd,然后db2 connect to dbname user username using pwd;
执行db2 get dbm cfg ,其中可以看到:

 缺省数据库监视器开关
   缓冲池                         (DFT_MON_BUFPOOL) = OFF
   锁定                                   (DFT_MON_LOCK) = OFF
   排序                                   (DFT_MON_SORT) = OFF
   语句                              (DFT_MON_STMT) = OFF
   表                                 (DFT_MON_TABLE) = OFF
   时间戳记                         (DFT_MON_TIMESTAMP) = ON
   工作单元                            (DFT_MON_UOW) = OFF

现在,我们把表的监视器开关给打开,执行 db2 update dbm cfg using dft_mon_table on,
这种方式是 在实例级别上设置监视器开关(影响所有用户和数据库),还有另外一种方式,
执行 db2 get monitor switches,显示

            监视器记录开关

db 分区号 0 的开关列表
缓冲池活动信息        (BUFFERPOOL) = OFF
锁定信息                    (LOCK) = OFF
排序信息                    (SORT) = OFF
SQL 语句信息           (STATEMENT) = OFF
表活动信息                 (TABLE) = OFF
获取时间戳记信息(时间戳记)    = ON  06/08/2005 08:28:10.052196
工作单元信息                 (UOW) = OFF
    db2 update monitor switches using switchName ,这种方式是 在应用程序级别上设置监视器开关(只适合于特定的应用程序)
再执行 db2 get dbm cfg 的时候发现 表的监视开关打开了:   表        (DFT_MON_TABLE) = ON
然后db2admin stop,db2admin start 让表监视器开关生效。
执行 db2 reset monitor for database dbname 让计数器复位,现在就可以运行应用系统了。之后获取数据库的快照可以执行 db2 get snapshot for database on dbname 就可以知道系统是否访问数据库了,缓存是否生效了。