MySQL redo log

Redolog是用于记录事务操作变化的日志,确保数据的持久性。从事务开始就记录,即使未提交也会保存,以便在异常如掉电时恢复数据。InnoDB使用redolog进行故障恢复。undolog是逻辑日志,redolog是物理日志。innodb_log_buffer_size定义redolog缓冲区大小。Bufferpool缓存池加速读写,脏数据异步写入磁盘,而redolog在事务提交时写入并记录commit状态。掉电情况下,redolog用于数据恢复,undolog信息也存储在redolog中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

redo log介绍

重做日志,用于记录事务操作的变化,确保事务的持久性。redo log是在事务开始后(begin; 之后)就开始记录,不管事务是否提交都会记录下来,在异常发生时(如数据持久化过程中掉电),InnoDB会使用redo log恢复到掉电前的时刻,保证数据的完整性。

undo log 称为逻辑日志, redo log称为物理日志;

innodb_log_buffer_size默认是16M,就是redo log缓冲区的大小,它随着事务开始,就开始写redo log,如果事务比较大,为了避免事务执行过程中花费过多磁盘IO,可以设置比较大的redo log缓存,节省磁盘IO;

redo log在磁盘上的位置是 /var/lib/mysql 下的ib_logfile0 和 ib_logfile1

buffer pool缓存池用于加速读和加速写,直接操作 data page,写redo log修改就算完成,有专门的线程去做把buffer pool中的dirty page写入磁盘。大小默认为134M

事务commit; 提交事务时,将InnoDB Log Buffer写入磁盘,redo log状态记录为commit;

Buffer Pool 里脏数据不需要写入磁盘与commit操作同步。而是开另一个线程再把内容写入磁盘。若这个数据刷新到磁盘的过程中出现掉电的情况,下次mysqld服务重启后,会根据redo log 内记录的数据进行数据恢复。undo log 也是要记录在 redo log 中

事务最重要的就是写redo logo;

在这里插入图片描述

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值