当前位置: 首页 > news >正文

回滚日志-undo log

undo log也被称为回滚日志,与redo log(物理日志,记录数据页的修改)不同的是,undo log是一种逻辑日志,用于数据修改的回滚,以此保证事务的原子性。

    该日志中记录的是数据修改的相反记录,比如:当删除一条记录,日志中会记录一条对应的新增记录。

  这样,在事务回滚时,我们就可以从undo log中反向读取相应的内容,并进行回滚;另外我们也可以根据undo log中的内容读取到一条被修改后数据的原值。

undo log 两大作用:

  • 实现事务回滚,保障事务的原子性。事务处理过程中,如果出现了错误或者用户执行了 ROLLBACK 语句,MySQL 可以利用 undo log 中的历史数据将数据恢复到事务开始之前的状态。
  • 实现 MVCC(多版本并发控制)关键因素之一。MVCC 是通过 ReadView + undo log 实现的。undo log 为每条记录保存多份历史数据,MySQL 在执行快照读(普通 select 语句)的时候,会根据事务的 Read View 里的信息,顺着 undo log 的版本链找到满足其可见性的记录。

redo log 和 undo log 区别在哪?

这两种日志是属于 InnoDB 存储引擎的日志,它们的区别在于:

  • redo log 记录了此次事务「修改后」的数据状态,记录的是更新之后的值,主要用于事务崩溃恢复,保证事务的持久性。
  • undo log 记录了此次事务「修改前」的数据状态,记录的是更新之前的值,主要用于事务回滚,保证事务的原子性。
http://www.dtcms.com/a/303490.html

相关文章:

  • Resilience4j 实战—使用方式及配置详解
  • 如何利用机器学习分析筛选生物标记物
  • 【机器学习】第八章 模型评估及改进
  • C++入门自学Day2-- c++类与对象(初识)
  • Redis做混沌测试都需要测哪些场景?预期如何?
  • Java项目:基于SSM框架实现的进销存管理系统【ssm+B/S架构+源码+数据库+毕业论文+远程部署】
  • # Android 15 修改系统源码指定安装源
  • yolo 目标检测600类目标
  • 免费版酒店收银系统弹窗在押金原路退回流程中的应用价值探究 ——仙盟创梦IDE
  • React Router v6 核心组件
  • 关闭 UniGetUI 自动 Pip 更新,有效避免 Anaconda 环境冲突教程
  • 基于Vue3.0+Express的前后端分离的任务清单管理系统
  • Leaflet 综合案例-矢量图层控制
  • 二分查找的「左右为难」:如何优雅地找到数组中元素的首尾位置
  • SQL笔试面试
  • 深入理解 Qt 信号与槽机制的底层逻辑
  • AUTOSAR Mcal SPI - EB工具配置介绍
  • Android Handler 完全指南
  • 手游遇攻击为何要用游戏盾SDK?
  • Linux学习--C语言(指针3)
  • 第三阶段—8天Python从入门到精通【itheima】-139节(pysqark实战-前言介绍)
  • linux du、df命令使用教程
  • AWS Bedrock Claude 3 API的完整指南
  • 基于STM32设计的智慧果园云监测系统_256
  • 从像素到频率:OpenCV傅里叶变换
  • 扑克洗牌
  • NVMe高速传输之摆脱XDMA设计18:PRP控制模块设计
  • NVMe高速传输之摆脱XDMA设计21:PCIe请求模块设计(下)
  • 机器学习基础-matplotlib
  • clock_nanosleep系统调用及示例