您现在的位置:首页 --> 查看专题: 日志漫游
理论上来说,如果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天十大热文
- [80] Go Reflect 性能
- [13] 我的git笔记
- [12] osx平台上lol英雄联盟launcher启
- [12] 公钥私钥加密解密数字证书数字签名详解
- [11] iOS可视化编程 Tips 之“无需代码设置
- [11] 正态分布的前世今生(一)
- [11] 基于HTTP缓存轻松实现客户端应用的离线支持
- [11] 浅谈Web安全验证码
- [11] 系统工程师的自我修养- sed篇
- [11] iTerm2 (Mac Terminal)
赞助商广告