博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DB CHNGPGS_THRES 参数
阅读量:4050 次
发布时间:2019-05-25

本文共 598 字,大约阅读时间需要 1 分钟。

----start

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

 

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

 

---更多参见:

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

----last updated on 2009.12.29

----written by ShangBo on 2009.12.29

----end

你可能感兴趣的文章
selenium学习资料
查看>>
<转>文档视图指针互获
查看>>
从mysql中 导出/导入表及数据
查看>>
HQL语句大全(转)
查看>>
几个常用的Javascript字符串处理函数 spilt(),join(),substring()和indexof()
查看>>
javascript传参字符串 与引号的嵌套调用
查看>>
swiper插件的的使用
查看>>
layui插件的使用
查看>>
JS牛客网编译环境的使用
查看>>
9、VUE面经
查看>>
关于进制转换的具体实现代码
查看>>
Golang 数据可视化利器 go-echarts ,实际使用
查看>>
mysql 跨机器查询,使用dblink
查看>>
mysql5.6.34 升级到mysql5.7.32
查看>>
dba 常用查询
查看>>
Oracle 异机恢复
查看>>
Oracle 12C DG 搭建(RAC-RAC/RAC-单机)
查看>>
Truncate 表之恢复
查看>>
Oracle DG failover 后恢复
查看>>
mysql 主从同步配置
查看>>