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试了让从库能准确复现主库的业务操作

相关推荐
天若有情6739 分钟前
【C++原创开源】formort.h:一行头文件,实现比JS模板字符串更爽的链式拼接+响应式变量
开发语言·javascript·c++·git·github·开源项目·模版字符串
好家伙VCC13 分钟前
**发散创新:基于Python与ROS的机器人运动控制实战解析**在现代机器人系统开发中,**运动控制**是实现智能行为的核心
java·开发语言·python·机器人
2401_8274999913 分钟前
python项目实战09-AI智能伴侣(ai_partner_2-3)
开发语言·python
派葛穆15 分钟前
汇川PLC-Python与汇川easy521plc进行Modbustcp通讯
开发语言·python
程途知微1 小时前
ConcurrentHashMap线程安全实现原理全解析
java·后端
lzhdim1 小时前
SharpCompress:跨平台的 C# 压缩与解压库
开发语言·c#
嘿嘿嘿x31 小时前
Linux记录过程
linux·开发语言
Mars酱1 小时前
1分钟编写贪吃蛇 | JSnake贪吃蛇单机版
java·后端·开源
devpotato1 小时前
人工智能(四)- Function Calling 核心原理与实战
java·人工智能
默 语1 小时前
Records、Sealed Classes这些新特性:Java真的变简单了吗?
java·开发语言·python