Oracle中checkpoint存在的意义

  checkpoint,即检查点,对于初学者来说其意义也许难以理解,其实我们可以把检查点看成一个数据库的事件,要探究这个事件存在的意义,首先有必要研究一下在修改数据库中的数据时,Oracle做了什么工作。
     
当我们修改数据库中的数据时,Oracle首先会把这些修改的数据读入内存database buffer cache中,在修改数据的同时, Oracle会将那些修改的数据顺序地写入到redo log file中,也就是一条一条的redo entry,这些redo信息是用来进行数据库恢复的。因为有了redo 的存在,Oracle无需在发出commit的时候急着将修改的数据立刻写回到磁盘中,这样的话效率会非常低。redo的存在就是为了在数据库崩溃之后,数据得以恢复。试想一下如果数据库在运行的过程中由于断电crash掉了,那么那些在内存中修改过的数据,并且还没来得及写入到文件中的数据就会丢失。在下次数据库启动的时候就要进行恢复了。首先,Oracle会通过redo log file中记录的信息进行事务重演,即前滚,这时候数据库中包含了提交的数据和没有提交的数据,完成了前滚之后,数据库就会打开以供用户使用,然后Oracle就会进行回滚,也就是把数据库中没有提交的数据回滚掉,这样数据库中就只剩下那些提交了的数据。当然,数据库恢复的时间越短越好,这样数据库就可以尽快地正常使用。那么是什么决定了数据库恢复的时间呢?答案就是检查点发生的频率。
     
当检查点发生的时候,Oracle就会通知后台进程DBWRdatabase buffer cache中修改过的数据,即dirty buffer写入到磁盘中,写完之后,CKPT会更新数据文件头和控制文件,记录checkpoint信息,标识变更。有了检查点事件,当数据库进行恢复的时候,redo log file中检查点之前的事务就不用被应用到了,因为它们已经被写到磁盘中了,这样可以缩短数据库恢复的时间。
     
所以,检查点存在的意义很简单,就是缩短崩溃恢复的时间。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29800581/viewspace-1249265/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29800581/viewspace-1249265/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值