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

Binlog、Redo log、Undo log的区别

一、binlog和redo log的区别

特性binlogredo log
记录对象记录的是 MySQL 服务器的事务操作,针对的是整个数据库实例。记录的是 InnoDB 存储引擎的数据页变化,针对的是具体的存储引擎层面。
记录内容记录的是事务的逻辑操作,例如 SQL 语句(语句型 binlog)或行变化(行型 binlog)。记录的是数据页的物理变化,例如某个页的某个偏移量的修改。
记录时间在事务提交后写入(即事务提交完成后才写入 binlog)。在事务执行过程中写入(即事务提交前会写入 redo log)。
记录方式写到一定大小会切换下一个,不会覆盖之前的日志。依次往几个Redo log文件中写入,如果最后一个文件写满了,又会回到第一个Redo log中写入。
用途备份,复制保证事务的持久性

 二、Redo log和undo log的区别

对比方向undo logredo log
记录内容记录事务修改前的旧值(用于回滚)记录数据页的变更内容(用于恢复)
写入顺序随机读写顺序写
作用帮助事务回滚以及实现MVCC用保证事务的持久性

三、更新数据时,各种日志的写入时机

举例:DELETE FROM t1 WHERE id=1

阶段undo logredo logbinlog
事务开始开始记录事务的旧值,但尚未写入。未写入。未写入。
事务执行阶段写入 undo log,记录 id=1 行的旧值。未写入。未写入。
事务提交判断undo log 已写入,记录旧值。未写入。未写入。
事务提交undo log 已写入,记录旧值。写入 redo log,记录 id=1 行被删除后的物理变化。未写入(binlog 在事务提交后写入)。
事务提交后undo log 已写入,记录旧值。redo log 已写入,记录物理变化。写入 binlog,记录 DELETE FROM t1 WHERE id=1 的逻辑操作
事务结束(成功)undo log 已写入,记录旧值。redo log 已写入,记录物理变化。binlog 已写入,记录逻辑操作。
事务回滚(失败)使用 undo log 回滚,恢复 id=1 行的旧值。未写入(redo log 只在事务成功提交时写入)。未写入(binlog 只在事务成功提交后写入)。

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

相关文章:

  • 【Qt】游戏场景和图元
  • RK3588,V4l2 读取Gmsl相机, Rga yuv422转换rgb (mmap)
  • Python3基础库入门(个人学习用)
  • 图解AUTOSAR_SWS_SynchronizedTimeBaseManager
  • 链表(C++)
  • 通信协议之串口
  • Java - 2. 面向对象编程
  • openwrt24.10.0版本上安装istoreOS的屏幕监控插件
  • SpringBoot (一) 自动配置原理
  • pyinstaller 对 pyexecjs模块打包老会有终端框闪烁
  • MySQL多表查询实验
  • GHCTF-web-wp
  • Linux进程管理之子进程的创建(fork函数)、子进程与线程的区别、fork函数的简单使用例子、子进程的典型应用场景、父进程等待子进程结束后自己再结束
  • PwnMe CTF 2025 web
  • 高等数学-第七版-上册 选做记录 习题7-4
  • python学习笔记(3)——元组
  • 网络华为HCIA+HCIP 策略路由,双点双向
  • 【云服务器】在Linux CentOS 7上快速搭建我的世界 Minecraft 服务器搭建,并实现远程联机,详细教程
  • docker启动nacos+redis+seata
  • IO模型之于并发编程模型、并发模型之于架构模式