Mysql redo和undo的作用
2020-05-27 本文已影响0人
Odven
数据修改,添加前都会把磁盘的数据页加载到内存。然后在内存中修改添加数据,同时把修改添加的数据记录记录在redolog中,当commit事务时,会把redolog的记录写入到磁盘
- 为什么只是把redolog的记录写入磁盘呢?
因为数据至少16k,而修改添加数据的记录很小能很快的刷新到磁盘,提高数据库的并发 - 什么时候会把内存的数据刷新到磁盘呢?
当buffer_pool占用到达75%时
CSR时
redolog写满时等
1) redo的功能
1. 记录内存数据页变化日志
2. 提供快速的事务提交,实现事务的可持久化(D)。当一个事务commit时,都会把redolog的信息刷新到磁盘,然后事务才能提交成功。
3. CSR 前滚数据的功能。当redolog中有已提交数据的日志,但ibd中没有时,会重做日志恢复数据(前滚)
2) undo的功能
1. 记录数据修改之前的状态
2. 提供事务工作过程中回滚的操作(rollback)
3. CSR 中将未提交的事务进行回滚