开发一个系统基本完毕的时候,为了提高系统的响应时间,我们需要把经常从数据库获取而又不经常修改的内容给缓存起来,但是,缓存起来,我们怎么知道是否缓存生效了,没从数据库去取呢?
对于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 就可以知道系统是否访问数据库了,缓存是否生效了。