RedoLog
RedoLog
用来解决事务的持久性
这里mysql45讲举得孔乙己老板记账的例子相当贴切
WAL(write ahead logging)老板记账的时候有两个账本 专门用来记录赊账和还账的记录 一个是总账本 一个是粉本 总账本的账是非常多的 而相对的粉本主要用于临时记账 当店里生意繁忙的时候 就先用粉本先记录下来账目 到了打烊之后 再将粉本的数据 同步到总账本
而数据库的redolog也是如此:
redolog分为两部分:
1.redo log buffer 重做日志缓冲 在内存当中
2.redo log file 重做日志文件 在磁盘当中
首先在更新修改数据时 不会直接进行磁盘io 而是访问bufferpool 在池中修改数据
当池子中的数据快满的时候 就将buffer的数据写入磁盘
这里的存储结构与redis主从节点是一样的 也是采用环形覆盖
为什么不直接将bufferpool中的数据直接同步到磁盘?
log日志文件都是追加的 顺序io WAL 性能较高
脏页数据刷新到磁盘是随机io
与BinLog的区别?
1.RedoLog是其他公司Innodb以插件的形式加入的 binlog是mysql的server层实现的
2.redolog是物理日志 binlog是逻辑日志(记录了sql语句)
3.redolog是循环写 会覆盖旧数据 binlog是追加写