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

redo log 和 undo log

redo log 和 undo log

redo log

重做日志,记录的是事务提交时数据页的物理修改,是用来实现事务的持久性。该日志文件由两部分组成:重做日志缓冲(redo log buffer)以及重做日志文件(redo log file),前者是在内存中,后者在磁盘中。当事务提交之后会把所有修改信息都存到该日志文件中,用于在刷新脏页到磁盘,发生错误时,进行数据恢复使用。

Redo Log文件不会被直接删除,而是通过一种称为“循环写入”的机制来管理。这意味着Redo Log文件会在达到其大小限制后从头开始覆盖旧的日志记录。

工作流程:

当一个事务进行增删改操作时,会在Buffer pool缓冲池中操作,如果缓存池中数据不存在,则读取磁盘中的数据(进行增删改操作则会出现脏页,要确保脏页成功刷新到磁盘中),将增删改的数据记录到redo log buffer中,redo log buffer记录数据页的物理变化,事务提交以后,会把redo log buffer刷新到到磁盘的redo log file(持久到磁盘)中。一段时间以后,在进行脏页刷新时,发生错误,则使用redo log file 进行数据恢复
在这里插入图片描述

undo log

回滚日志,在insert、update、delete的时候产生,用于记录数据被修改前的信息(保证事务的原子性),作用包含两个:提供回滚MVCC(多版本并发控制)。undo log和redo log记录物理日志不一样,它是逻辑日志。可以认为当delete一条记录时,undo log中会记录一条对应的insert记录,反之亦然,当update一条记录时,它记录一条对应相反的update记录。当执行rolback时,就可以从undo log中的逻辑记录读取到相应的内容并进行回滚。
undo log销毁:undo log在事务执行时产生事务提交时,并不会立即删除undo log,因为这些日志可能还用于MVCC

  • 在当insert的时候,产生的undo log日志只在回滚时需要,在事务提交后,可被立即删除
  • 而update、delete的时候,产生的undo log日志不仅在回滚时需要,在快照读时(MVCC)也需要,不会立即被删除。

undo log存储:undo log采用段的方式进行管理和记录, rolback seament 回滚段中,内部包含1024个undo log segment

redo log 和 undo log的区别

  • redo log日志记录的是数据页的物理变化,服务宕机可用来同步数据

  • undo log 不同,它主要记录的是逻辑日志,当事务回滚时,通过逆操作恢复原来的数据,比如我们删除一条数据的时候,就会在undo log日志文件中新增一条delete语句,如果发生回滚就执行逆操作;

  • redo log保证了事务的持久性,undo log保证了事务的原子性


http://www.mrgr.cn/news/80931.html

相关文章:

  • 自定义 C++ 编译器的调用与管理
  • 接口绑定有几种实现方式
  • ML 系列:第 40 节 — 最大似然MLE 的简单问题
  • c4d动画怎么导出mp4视频,c4d动画视频格式设置
  • ABAP SQL 取日期+时间最新的一条数据
  • linux环境使用yum方式安装nginx
  • 实现 WebSocket 接入文心一言
  • Golang学习历程【第二篇 fmt包变量、常量的定义】
  • aosp15 - App冷启动
  • 编译原理复习---基本概念+推导树
  • 云计算HCIP-OpenStack01
  • 滴滴的logicFlow流程图组件
  • 通过smem 定时检测系统内存占用情况
  • uniapp Native.js 调用安卓arr原生service
  • Ubuntu 上传项目到 GitHub
  • windwos defender实现白名单效果(除了指定应用或端口其它一律禁止)禁止服务器上网
  • 我在广州学 Mysql 系列——有关 Mysql 函数的练习
  • Mysql语法之DQL查询的多行函数
  • Linux文件属性 -- 查看文件命令
  • jvm符号引用和直接引用
  • 操作系统如何管理进程所用的资源
  • 编译原理复习---正则表达式+有穷自动机
  • 机器学习探索之旅:开启智能预测的新篇章!!! 笔记 ! ! !)
  • UE5 移植Editor或Developer模块到Runtime
  • *【每日一题 基础题】 [蓝桥杯 2024 省 B] 好数
  • FFmpeg库之ffplay