文章目录

    • @[toc]
  • rollback segment
  • delete/update操作的内部机制

undo log有两个作用:提供回滚和MVC

undo log主要记录了数据的逻辑变化,例如
当INSERT一条记录时,则undo log记录一条DELETE记录; 当UPDATE一条记录时,则undo log记录一条相反的 UPDATE记录;
当delete一条记录时,则undo log记录一条insert记录;
innodb中 undo log分为2种:
insert undo log :insert操作产生的undo log
update undo log :update 和 delete操作产生的 undo log

因为insert操作只对事务本身可见,因此insert undo log可以在提交事务后就删除;


在事务提交的时候,会将该事务对应的undo log放入到删除列表中,未来通过purge来删除


在数据修改的时候,不仅记录了redo log,还记录了相对应的undo log,如果因为某些原因导致事务失败或回滚了,可以借助该undo log进行回滚。


rollback segment

一个回滚段(rollback segment)中有1024个undo log segment

变量 innodb_undo_logs (5.6版本以前该变量是 innodb_rollback_segments )可以自定义多少个rollback segment,默认值为128。
在MySQL5.6中,undo log 的存放位置还可以通过变量 innodb_undo_directory 来自定义存放目录,默认值为"."表示datadir。
默认rollback segment全部写在一个文件中,但可以通过设置变量 innodb_undo_tablespaces 平均分配到多少个文件中。该变量默认值为0,即全部写入一个表空间文件。

delete/update操作的内部机制

在事务提交的时候,会将该事务对应的undo log放入到删除列表中,未来通过purge线程来删除。

delete操作实际上不会直接删除,而是将delete对象打上delete flag,标记为删除,最终的删除操作是purge线程完成的。update分为两种情况:update的列是否是主键列。如果不是主键列,在undo log中直接反向记录是如何update的。   如果是主键列,update分两部执行:先删除该行,再插入一行目标行。

undo日志属于逻辑日志,redo是物理日志。

undo log、rollback segment相关推荐

  1. undolog 是binlog_mysql日志redo log、undo log、binlog以及作用看这篇就可以啦

    什么是事务日志? 事务要保证ACID的完整性必须依靠事务日志做跟踪,每一个操作在真正写入数据数据库之前,先写入到日志文件中如要删除一行数据会先在日志文件中将此行标记为删除,但是数据库中的数据文件并没有 ...

  2. 庖丁解InnoDB之UNDO LOG

    简介: Undo Log是InnoDB十分重要的组成部分,它的作用横贯InnoDB中两个最主要的部分,并发控制(Concurrency Control)和故障恢复(Crash Recovery),In ...

  3. 什么是redo log和undo log

    MySQL日志系统中最重要的日志为 重做日志redo log 和 归档日志bin log ,后者为MySQL Server层的日志,前者为InnoDB存储引擎层的日志. 1 重做日志redo log ...

  4. Undo Log学习

    一 Undo Log的作用 ** ** 数据库故障恢复机制的前世今生中提到过,Undo Log用来记录每次修改之前的历史值,配合Redo Log用于故障恢复.这也就是InnoDB中Undo Log的第 ...

  5. 庖丁解 InnoDB 之 UNDO LOG

    Undo Log是InnoDB十分重要的组成部分,它的作用横贯InnoDB中两个最主要的部分,并发控制(Concurrency Control)和故障恢复(Crash Recovery),InnoDB ...

  6. MySQL - undo log 图文详解

    一 前言 undo log 是 innodb 实现,总的来说提供两个作用:回滚和多版本控制(MVCC).是事务特性的重要组成部分,在数据发生更新操作时候(INSERT.DELETE.UPDATE)时会 ...

  7. MYSQL专题-MySQL三大日志binlog、redo log和undo log

    日志是mysql数据库的重要组成部分,记录着数据库运行期间各种状态信息.mysql日志主要包括重做日志(redo log).回滚日志(undo log).二进制日志(bin log).错误日志(err ...

  8. 【MySql进阶】undo日志详解:undo日志结构、undo日志链表、回滚段、undo log原理

    undo日志 本文为阅读<MySql是怎样运行的>的笔记,供大家参考. 文章目录 undo日志 概述 undo日志数据结构 insert 对应的undo log delete 对应的und ...

  9. mysql- 数据库的6种日志:错误日志、通用日志、慢日志、二进制日志、redo log、undo log

    MySQL日志 日志用来做什么? 1.用来排错 2.用来做数据分析 3.了解程序的运行情况,是否健康 日志放在哪里? 日志一般放在数据目录 日志分类 错误日志.通用日志.慢日志.二进制日志 一.错误日 ...

  10. 必须了解的MySQL三大日志:binlog、redo log和undo log

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者: 六点半起床 juejin.im/post/68602522 ...

最新文章

  1. Problem B: 故障电灯(light)
  2. 和计算机互动英语,计算机专业英语互动教学方法探讨
  3. Qt中的TableWidget初始化表头、行高、选中、自动扩展和接受修改
  4. curl 请求日志_HTTP入门(一):在Bash中curl查看请求与响应
  5. C#LeetCode刷题之#884-两句话中的不常见单词(Uncommon Words from Two Sentences)
  6. pytorch图像数据增强N大技巧
  7. 普罗米修斯 监控_新一代的监控系统普罗米修斯(Prometheus)
  8. 5.企业安全建设指南(金融行业安全架构与技术实践) --- 安全团队建设
  9. 全息过山车:巨蚁数字全息刺激体验
  10. imageai--自动机器学习初体验
  11. UI设计流程是什么?来看看UI设计完整的设计流程吧
  12. 批量下载excel中超链接对应的文件
  13. Android 適配器的回調
  14. idea使用lombok的时候无法找到log,编译时无法找到log
  15. SpringCloud 网关 Gateway
  16. 博科SAN交换机基本配置(华为SNS系列交换机为例OEM博科)
  17. Solidigm P44 Pro M.2 SSD评测:全套原厂方案,性能高效且稳定
  18. Linux内核设计与实现(13)第十三章:虚拟文件系统
  19. Gavin老师Transformer直播课感悟 - Rasa项目实战之银行金融Financial Bot智能业务对话机器人业务功能微服务解析与调试(八十九)
  20. ArcGIS将太平洋调至地图中间(改变地图中心经度)

热门文章

  1. 鸿蒙os开机时间,再见了安卓!华为鸿蒙OS 2.0正式登场,开机只需19秒
  2. 成功要素:富兰克林的13条必要美德! 与 狗熊掰棒子
  3. 算法: 删除链表中的数据Remove Linked List Elements
  4. 创建数据库以及该数据库下的表单
  5. python给每个key添加数据_一文看懂Python collections模块的高效数据类型
  6. 453.最小移动次数使数组元素相等
  7. 卡方检验用于特征选择
  8. 推荐系统-猜你喜欢设计
  9. 最新隐马尔可夫模型HMM详解
  10. html缓存失败是什么,HTML5离线“应用程序缓存错误事件:清单读取失败(-1)”...