当前位置: 首页 > 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.dtcms.com/a/98455.html

相关文章:

  • 【从零实现Json-Rpc框架】- 项目实现 - Dispatcher模块实现篇
  • Eigen 3
  • Jenkins 持续集成:Linux 系统 两台机器互相免密登录
  • 27_promise
  • 基于Selenium的IEEE Xplore论文数据爬取实战指南
  • 通信协议之串口
  • Java面试黄金宝典22
  • 【Basys3】外设-灯和数码管
  • 使用ANTLR4解析Yaml,JSON和Latex
  • SpringSecurity配置(自定义退出登录)
  • CubeMx——串口与 printf 打印
  • Python每日一题(9)
  • MyBatis的第一天笔记
  • 标书工具私有部署技术方案
  • springmvc redirect 使用https后跳转到了http://域名:443问题处理
  • 梯度裁剪(Gradient Clipping)
  • 【商城实战(97)】ELK日志管理系统的全面应用
  • 大模型最新面试题系列:微调篇之微调框架(三)
  • MySQL 常见面试问题总结
  • web3包含哪些关键技术栈,一些成功使用场景的分享
  • [FGPA基础学习]分秒计数器的制作
  • flutter 专题 七十 Flutter应用开发之webview_flutter插件
  • C盘清理技巧分享:PE Dism++ 空间清理篇
  • Vue学习笔记集--watch
  • 【SQL】MySQL基础2——视图,存储过程,游标,约束,触发器
  • 关于音频采样率,比特,时间轴的理解
  • ai 项目练习(一)
  • AI来了,新手如何着手学习软件开发?
  • 基于kafka的分布式日志收集平台项目(续)
  • AnimateCC基础教学:随机抽取获奖名单及奖品-V1.0原型版