前滚和回滚的区别
来源:互联网 发布:什么是3g网络 编辑:程序博客网 时间:2024/04/29 03:06
前滚:
未完全提交的事务,即该事务已经被执行commit命令了,只是现在该事务修改所对应的脏数据块中只有一部分被写到磁盘上的数据文件中,还有一部分已经被置为提交标记的脏块还在内存上,如果此时数据库实例崩溃了,则当数据库实例恢复时,就需要用前滚(这个机制)来完成事务的完全提交,即将先前那部分已经被置为提交标记且还在内存上的脏块写入到磁盘上的数据文件中。
回滚:
未提交的事务,即该事务未被执行commit命令。但是此时,该事务修改的脏块中也有可能一部分脏块写入到数据文件中了。如果此时数据库实例崩溃了,则当数据库实例恢复时,就需要用回滚(这个机制)来将先前那部分已经写入到数据文件的脏块从数据文件上撤销掉。
注释:
实例恢复,就是oracle软件系统根据数据库实例崩溃前最后一次检查点的那一刻到数据库实例崩溃那一刻期间所做的所有操作(无论该操作是否有提交的,这些操作可以从重做日志上读取)对该数据库实例对应的数据库(特别是数据文件部分做恢复,当然其他配合数据文件的文件,如控制文件,日志文件,也会做相关的恢复修改)进行前滚,即将该期间的操作重做一遍。之后再将其中未提交的操作进行回滚。这里,可能就有人疑问了,为什么前滚时不只做提交的操作,未提交的操作就不要做就好了嘛?因为数据库实例崩溃前,未被执行commit命令的事务,其所修改的脏块中也有可能一部分脏块已经写入到数据文件中了,所以需要进行回滚操作。
总之,实例恢复时,先做前滚,后做回滚。
(疑问)至于为什么不用如下方法就不得而知了?
该方法具体为,前滚时只做提交的操作,不做未提交的操作,到回滚操作阶段时,再去回滚那些(记录在重做日志里的)未提交的操作。
【前滚和回滚交替进行??--------Recovery在SQL Server启动时也会发生,在数据库启动过程中,SQL Server会检查事务日志,看是否存在已提交或未提交的事务,如果发现在最后一次检查点发生后,还有已提交的事务,则SQL Server会对这些事务进行REDO(ROLL FORWARD);而如果发现未提交的事务,则进行UNDO(ROLL BACK)。http://blog.csdn.net/hmzhangfeng/article/details/6338021】
注意: 未提交的事务 提交的事务 未完全提交的事务 完全提交的事务
详见 何明
- 前滚和回滚的区别
- 前滚和回滚的区别
- 前滚和回滚的区别 .
- 前滚和回滚
- 前滚和回滚
- Android笔记008_关于数据库的前滚和回滚的区别
- 前滚和回滚撤销
- Oracle 前滚和回滚
- 前滚与回滚
- ORACLE实例恢复--前滚和回滚
- Oracle基本步骤前滚和回滚
- 关于前滚(roll forward)和回滚(roll back)
- oracle中数据是怎样前滚和回滚的
- 前滚&后滚
- [搬家前]数据库操作的回滚
- 事务的回滚和不提交的区别
- 回滚revert和reset区别
- Oracle实例恢复——说说前滚和回滚
- Android平台上如何让应用程序获得系统权限以及如何使用platform密钥给apk签名
- IOS多线程GCD
- Ajax实现自动补全问题解决
- 【discuzx2】仅在后台将会员提升为管理员是不能登录后台滴
- python模块介绍- logging 日志工具
- 前滚和回滚的区别
- cocos2d-x 2.2 CocoStudio动画和界面编辑器按钮控制以及场景编辑器使用
- gridcontrol 动态表
- 内存搜索
- 25种用户十秒离开你网站的原因
- 手动调整SSAS Cube并行处理值提高运行效率
- qt中QString与String与int,double,char*之间的转换
- Qt的界面线程 和Mfc 一点不一样的地方
- iptables 防火墙