Java常见技术分享-27-事务安全-事务日志-事务日志框架

事务日志的框架

Redo Log (重做日志-InnoDB存储引擎层)

它记录的是数据修改的"动作", 这样数据提交后 如果还没来得及写入磁盘, 崩溃了, 重启后就能通过重新执行这些"动作", 把数据恢复到崩溃前的状态, 保证数据提交之后, 数据一定能持久化到磁盘, 不会因为崩溃而消失。

Undo Log (回滚日志- InnoDB存储引擎层)

它记录的是数据修改前的"快照",比如你把数字从1改成2 , undo log 会记录着 "这个位置原来是1 ", 如果数据出错或者要回滚, 就能通过undo log 将数据回滚到数据修改之前的状态。 保证事务执行过程中, 如果出错或者用户执行了rollBack, 能将数据恢复到事务开始前的状态,

BinLog (Mysql层)

它记录了 修改了什么数据, 比如 你把数字从1 改成 2 , 就直接记 把某个位置改成2 。 保证 从库 能准确的复现主库的业务操作 或者进行数据备份。

BinLog 和 Redo Log 的区别

核心区别在于 redo log 是 "物理日志" , 而 BinLog 是 "逻辑日志"。

物理日志, 记录是 在 "哪个数据页上做了什么改动", 就像将 "在第3页第5行的位置, 把数字加1 ", 它更贴近底层的存储结构, 恢复速度非常快。 而 逻辑日志, 记录的是"数据的逻辑变化", 像 "把id =2 的记录加1 ",更偏向业务层面的操作。

虽然最终结果看起来一样, 但是他们记录的角度和用户完全不同。

redo log 是为了让innodb 引擎 在崩溃后能快速恢复数据, 而binlog试了让从库能准确复现主库的业务操作

相关推荐
聆春烟雨簌簌8 分钟前
LangChain4j使用文档
开发语言·python
程序员小羊!9 分钟前
12.Java 多线程编程
java·开发语言
xuhaoyu_cpp_java15 分钟前
项目学习(三)代码生成器
java·经验分享·笔记·学习
乐观勇敢坚强的老彭15 分钟前
C++信息学奥赛lesson1
java·开发语言·c++
San813_LDD20 分钟前
[深度学习] 数据序列化格式对比:以日志级别配置为例
xml·java·前端
jllllyuz22 分钟前
MATLAB实现滚动轴承故障诊断(外圈故障)
开发语言·人工智能·matlab
github_czy24 分钟前
更加优雅的类型检查与传参---mcp源码分析
java·服务器·开发语言
专注_每天进步一点点30 分钟前
IDEA中,Apifox Helper 的 2.0.15-243版本的插件 导出指定的接口,入参的中文名为空,描述为空
java·ide·intellij-idea
Irissgwe31 分钟前
C++ STL关联式容器详解:set、multiset、map、multimap
开发语言·c++·stl·set·map·multiset·关联式容器
兰令水31 分钟前
leecodecode【区间DP+树形DP】【2026.6.10打卡-java版本】
java·算法·leetcode