MySQL----undo log回滚日志原理、流程以及与redo log比较

回滚日志

回滚日志,保存了事务发生之前的数据的一个版本,用于事务执行时的回滚操作,同时也是实现多版本并发控制(MVCC)下读操作的关键技术。

如何理解Undo Log

事务需要保证原子性,也就是事务中的操作要么全部完成,要么什么也不做。但有时候事务执行到一半会出现一些情况,比如:

  • 事务执行过程中可能遇到各种错误,比如服务器本身的错误,操作系统错误,甚至是突然断电导致的错误。
  • 在事务执行过程中我们手动输入ROLLBACK语句结束当前事务的执行。这时需要把数据改回原先的样子,这个过程称之为回滚。
  • 每当我们要对一条记录做改动时,都需要把回滚时所需的东西记下来。
    MySQL把这些为了回滚而记录的这些内容称之为撤销日志或者回滚日志(即Undo Log)。注意,由于查询操作(SELECT)并不会修改任何用户记录,所以在杳询操作行时,并不需要记录相应的Undo日志

Undo Log会产生Redo Log,也就是Undo Log的产生会伴随着Redo Log的产生,这是因为Undo Log也需要持久性的保护。

作用:

  • 事务发生错误时回滚rollback,即提供数据回读;
  • 提供了MVCC(多版本并发控制)的非锁定读(快照读);

原理:

在这里插入图片描述

DB_TRX_ID:事务ID,mysql会对每一个事务分配一个全局的,不冲突的id。
DB_ROLL_PTR:回滚指针
DB_ROW_ID:如果没有主动加主键列,innodb自己加的主键列。

undo log的存储机制

undo log的存储由InnoDB存储引擎实现,数据保存在InnoDB的数据文件中。在InnoDB存储引擎中,undo log是采用分段(segment)的方式进行存储的。rollback segment称为回滚段,每个回滚段中有1024个undo log segment。在MySQL5.5之前,只支持1个rollback segment,也就是只能记录1024个undo操作。在MySQL5.5之后,可以支持128个rollback segment,分别从resg slot0 - resg slot127,每一个resg slot,也就是每一个回滚段,内部由1024个undo segment 组成,即总共可以记录128 * 1024个undo操作。

redo log与undo log比较

  1. undo log和redo logo都是InnoDB的功能,都是事务日志。
  2. redo log通常是物理日志,记录的是数据页的物理修改,而不是某一行或某几行修改成怎样怎样,它用来恢复提交后的物理数据页(恢复数据页,且只能恢复到最后一次提交的位置)。
  3. undo log用来回滚行记录到某个版本。undo log一般是逻辑日志,根据每行记录进行记录。
  4. undo log保证事务的原子性,而redo log则是保证事务的持久性。undo log在InnoDB中用来实现MVCC多版本控制,执行rollback操作时,undo log可以作为事务回滚的快照读参考,而redo log是备份的最新数据位置,系统冗机时,只要重启mysql服务,就可以将未持久保存的数据持久到磁盘。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/34391.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常用框架-Spring MVC

常用框架-Spring MVC 1、什么是Spring MVC?2、Spring MVC有哪些优点?3、Spring MVC的主要组件有哪些?4、DispatcherServlet是什么?5、Spring MVC框架的控制器是什么?6、Spring MVC的控制器是不是单例模式?7、控制器默认以单例模式创建会带来什么问题?怎么解决?8、描述下…

Nvidia Isaac Sim图编程OmniGraph 入门教程 2024(6)

Nvidia Isaac Sim 入门教程 2024 版权信息 Copyright 2023-2024 Herman YeAuromix. All rights reserved.This course and all of its associated content, including but not limited to text, images, videos, and any other materials, are protected by copyright law. …

知行合一与思行合一

“知行合一”和“思行合一”都是重要的哲学概念,强调了思维与实践的关系,但侧重点有所不同。以下是对这两个概念的详细解释、历史背景及具体实践示例。 知行合一 知行合一是由明代哲学家王阳明提出的一个重要思想,强调知识与行动的统一。 …

P7771 【模板】欧拉路径

网址如下&#xff1a; P7771 【模板】欧拉路径 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 忘掉了输出欧拉回路的方法&#xff0c;搞了我好久 关于欧拉回路的知识可以看我之前的博客&#xff1a; 一点关于欧拉回路的总结-CSDN博客 代码如下&#xff1a; #include<q…

学习笔记——动态路由——RIP(距离矢量协议)

一、距离矢量协议 1、距离矢量协议 矢量行为&#xff1a;协议收到一个路由之后&#xff0c;查看是否可以加入到本地的路由表中&#xff0c;如果可以加入&#xff0c;则可以传递&#xff0c;如果不可以加入&#xff0c;则无法传递。 距离矢量路由协议 RIP基于距离矢量算法(又…

记录外部EEPROM读写有问题排查过程

由于EEPROM的IIC驱动是用模拟IO写的 1.用示波器抓IIC的波形 2.将SDA和SCLK和GND引脚用线引出,探头连接 3.检查并确保探头衰减是X1而不是X10。 4.软件触发写EEPROM&#xff0c;示波器设置下降沿捕获 5.如果有波形&#xff0c;对波形进行Decode&#xff0c;看解码出来的数据是否…

使用 Reqable 在 MuMu 模拟器进行App抓包(https)

1、为什么要抓包&#xff1f; 用开发手机应用时&#xff0c;查看接口数据不能像在浏览器中可以直接通过network查看&#xff0c;只能借助抓包工具来抓包&#xff0c;还有一些线上应用我们也只能通过抓包来排查具体的问题。 2、抓包工具 实现抓包&#xff0c;需要一个抓包工具…

2024-06-24 百度地图的使用及gps定位坐标获取

1.百度地图的使用教程 2. 定位功能的实现 第一种&#xff1a;通过h5自带定位获取当前gps坐标 var options {enableHighAccuracy: true,timeout: 5000,maximumAge: 0};function success(pos) {var crd pos.coords;alert(crd.latitude---crd.longitude---crd.accuracy);conso…

​【VMware】VMware Workstation的安装

目录 &#x1f31e;1. VMware Workstation是什么 &#x1f31e;2. VMware Workstation的安装详情 &#x1f33c;2.1 VMware Workstation的安装 &#x1f33c;2.2 VMware Workstation的无限使用 &#x1f31e;1. VMware Workstation是什么 VMware Workstation是一款由VMwar…

【多模态】BEIT: BERT Pre-Training of Image Transformers

论文&#xff1a;BEIT: BERT Pre-Training of Image Transformers 链接&#xff1a;https://arxiv.org/pdf/2301.00184 Introduction BEIT&#xff08;Bidirectional Encoder representation from Image Transformers&#xff09;Motivation: 启发于BERT的自编码方式&#xf…

【Linux】Centos升级到国产操作系统Openeuler

一、前言 迁移工具采用Openeuler官网提供的x2openEuler工具&#xff0c;是一款将源操作系统迁移到目标操作系统的迁移工具套件&#xff0c;具有批量化原地升级能力&#xff0c;当前支持将源 OS 升级至 openEuler 20.03。 官网链接&#xff1a;openEuler迁移专区 | 迁移专区首页…

详解Spring AOP(一)

目录 1. AOP概述 2.Spring AOP快速入门 2.1引入AOP依赖 2.2编写AOP程序 3.Spring AOP核心概念 3.1切点&#xff08;PointCut&#xff09; 3.2连接点&#xff08;Join Point&#xff09; 3.3通知&#xff08;Advice&#xff09; 3.4切面&#xff08;Aspect&#xff09; …

SwiftUI 6.0(iOS 18/macOS 15)关于颜色 Color 的新玩法

概览 WWDC 2024 重装升级的 SwiftUI 6.0 让 Apple 不同平台&#xff08;iOS 18/macOS 15&#xff09;显得愈发的冰壶玉衡、美轮美奂。 之前梦寐以求的颜色混合功能在 WWDC 24 里终于美梦成真啦&#xff01; 在本篇博文中&#xff0c;您将学到如下内容&#xff1a; 概览1. 梦想…

PyCharm安装requests失败解决方法

PyCharm安装request失败解决方法&#xff0c;尝试各种方法均未能成功安装 失败一&#xff1a; 若用如下图方法 失败二&#xff1a;在桌面终端命令安装后&#xff0c;在Pycharm中导包依旧显示红色报错&#xff0c;未安装 采用如下方法&#xff0c;选择Pycharm终端Terminal&…

PHP-CGI的漏洞(CVE-2024-4577)

通过前两篇文章的铺垫&#xff0c;现在我们可以了解 CVE-2024-4577这个漏洞的原理 漏洞原理 CVE-2024-4577是CVE-2012-1823这个老漏洞的绕过&#xff0c;php cgi的老漏洞至今已经12年&#xff0c;具体可以参考我的另一个文档 简单来说&#xff0c;就是使用cgi模式运行的PHP&…

leetcode 503.下一个更大的元素 | 独树一帜!单调栈登场!

题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 这道题目可以用暴力的办法写出来&#xff0c;只需要在数组nums后面再将元素粘到后面&#xff0c;在对数组里的每一个元素都进行分析就可以了&#xff0c;这里我们来说另外一种解法——单调栈 我们这里先定义一…

数据收集和数据分析

数据分析和收集是一个多步骤的过程&#xff0c;涉及到不同的方法和思维构型。 以下是一些常见的数据收集方法和数据分析的思维模式&#xff1a; ### 数据收集方法&#xff1a; 1. **调查问卷**&#xff1a; 通过设计问卷来收集定量或定性数据。&#xff08;质量互变规律里面…

MOD和DIV的区别说明

1.说明 div 是取 A/BC&#xff0c;得到是C的值&#xff1b; mod 是取 A/BC...D,得到余数D的值。 2.实践 A8,B3,C2,D2 A9,B3,C3,D0

13.1.k8s集群的七层代理-ingress资源(进阶知识)

目录 一、ingress概述 1.前言 2.问题 3.ingress资源 二、ingress-nginx是什么 三、ingress-nginx 实现原理 四、部署ingress-nginx 1.获取部署文件 ingress-nginx.yaml 2.部署ingress-nginx 3.检查部署是否成功 五、编写使用Ingress样例代码 1.Ingress资源对象yaml文…

【科研基础】PRML

文章目录 IntroductionSupervised / unsupervised learningOverfittingBayesianIntroduction Supervised / unsupervised learning P3 Overfitting p6 p9: For a given model complexity, the over-fitting problem become less severe as the size of the data set increa…