您现在的位置:首页 --> 查看专题: 日志漫游
理论上来说,如果MySQL数据库InnoDB存储引擎的buffer足够大,就不需要将数据本身持久化。将全部的redo log重新执行一遍就可以恢复所有的数据。但是随着时间的积累,Redo Log会变的很大很大。如果每次都从第一条记录开始恢复,恢复的过程就会很慢,从而无法被容忍。为了减少恢复的时间,就引入了Checkpoint机制。
虽说Redo Log将数据的操作细分到了页面级别。但是有些在多个页面上的操作是逻辑上不可分裂的。比如B-Tree的分裂操作,对父节点和2个子节点的修改。当进行恢复时,要么全部恢复,要么全部不 恢复,不能只恢复其中的部分页面。InnoDB中通过mini-transaction(MTR)来保证这些不可再分的操作的原子性。
Undo Log的原理很简单,为了满足事务的原子性,在操作任何数据之前,首先将数据备份到一个地方(这个存储数据备份的地方称为Undo Log)。然后进行数据的修改。如果出现了错误或者用户执行了ROLLBACK语句,系统可以利用Undo Log中的备份将数据恢复到事务开始之前的状态。
[ 共3篇文章 ][ 第1页/共1页 ][ 1 ]
近3天十大热文
- [53] android 开发入门
- [51] 如何拿下简短的域名
- [51] IOS安全–浅谈关于IOS加固的几种方法
- [50] 【社会化设计】自我(self)部分――欢迎区
- [50] Oracle MTS模式下 进程地址与会话信
- [48] 图书馆的世界纪录
- [47] Go Reflect 性能
- [43] 读书笔记-壹百度:百度十年千倍的29条法则
- [36] 程序员技术练级攻略
- [34] 视觉调整-设计师 vs. 逻辑
赞助商广告