DB CHNGPGS_THRES 参数

来源:互联网 发布:会计上升空间 知乎 编辑:程序博客网 时间:2024/05/21 06:55

----start

     之前看书的时候遇到这样一个问题,并不是每次commit都会使record写到磁盘上,而是当被修改的数据页数目达到了CHNGPGS_THRES 数值时,缓冲池中的这些修改的数据页记录就会被“具体化”或者被写到表空间磁盘上。如果这时系统突然停电了,怎么办?用户认为自己已经commit了,可是数据并没有写到磁盘上。

 

     后来我在牛新庄的<循序渐进db2>找到了答案,原来以上问题少分析了一个很重要的东西,那就是日志,当我们commit事务时,我们的事务将会被记录在日志中(db2采用提前写入日志的方式),但对数据做的更改不一定写入磁盘,有可能在缓冲池中,此时,用户将会收到commit成功的消息。还有一种情况,当用户在一个事务中对数据库做大规模操作时,有可能数据已经写入了磁盘,但是commit并没有结束。如果在这两种情况下,系统突然断电,或因其他原因崩溃,那么数据库将会处于一种不一致的状态,当下次启动db2时,db2将会自动启动崩溃恢复,它将根据日志文件,回滚那些没有提交,但数据库已经写入磁盘的事务,重新提交那些已经提交,但数据并没有写入磁盘的事务,以此来保证数据库的一致性。

 

---更多参见:DB2 精萃

----声明:转载请注明出处。

----last updated on 2009.12.29

----written by ShangBo on 2009.12.29

----end

原创粉丝点击