InnoDB undo, redo,binlog,data什么时候写?
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决定
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步