InnoDB undo, redo,binlog,data什么时候写?

本文详细解释了数据库事务处理中的undo和redo日志的作用及其工作流程,并介绍了binlog的写入时机,帮助理解事务的原子性和持久性保障。

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

undo:相当于数据修改前的备份

redo: 相当于数据修改后的备份,为了保证事务的持久化,redo会一直写

Undo + Redo事务的简化过程
  假设有A、B两个数据,值分别为1,2.
  A.事务开始.
  B.记录A=1到undo log.
  C.修改A=3.
  D.记录A=3到redo log.
  E.记录B=2到undo log.
  F.修改B=4.
  G.记录B=4到redo log.
  H.将redo log写入磁盘
  I.事务提交完成

Undo + Redo事务的特点
  A. 为了保证持久性,必须在事务提交前将Redo Log持久化  ---一般每个事务提交时或每秒刷盘
  B. 数据不需要在事务提交前写入磁盘,而是缓存在内存中。    ---data在此不需要写磁盘,但是如果redo文件过小也会触发事务未提交前数据落盘
  C. Redo Log 保证事务的持久性  
  D. Undo Log 保证事务的原子性。
  E. 有一个隐含的特点,数据必须要晚于redo log写入持久存储。

binlog:事务提交时写(先写redo再写binlog),何时刷盘由sync_binlog决定

转载于:https://www.cnblogs.com/xingye001/p/4379466.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值