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

相关推荐
小羊没烦恼!1 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里1 天前
java中的继承和多态的区别
java
小羊没烦恼!1 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕1 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码1 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖1 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时1 天前
01-06-A-JVM排查实战详解
java·jvm
伞伞悦读1 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
vipxieliang1 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot
C语言小火车1 天前
C/C++ 为什么需要编译器?
开发语言·c++