37 关于 undo 日志

前言

undo 和 redo 是在 mysql 中 事务, 或者 异常恢复 的场景下面 经常会看到的两个概念

这里 来看一下 undo, undo 主要是用于 事务回滚 的场景下面 

 

测试表结构如下

CREATE TABLE `tz_test` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `field1` varchar(128) DEFAULT NULL,
  `field2` varchar(128) DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `field_1_2` (`field1`,`field2`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8

 

测试数据如下

5f02727c97d84e18b6b6bf8b4f48b9c9.png

 

 

记录更新 undo 业务记录

执行 sql 如下 “update tz_test set field1 = 'field13' where id = '2';”

首先是获取 undo 页的 free 记录的偏移, 然后 开始记录数据

c8860102227f4910910f9534edb3d476.png

 

记录操作类型, undo_no, table_id 等等 相关上下文信息

400cd75f36214bf5a142a226ce2015ef.png

 

记录 info_bits, trx_id, poll_ptr

72f500b26141421e8e9742c7e2ea316c.png 

记录标记当前记录的 字段信息, 这里是 ”where id = 2”

ecadd5ed3d874b2f85ad19c3167428a4.png 

记录更新的相关字段信息, 字段数量, 字段编号, 字段长度, 字段内容 

0755bec570114c66b9bb845895a85947.png 

记录当前 记录 的所有的字段信息, 字段编号, 字段长度, 字段内容 

f492e22829c84aba988833a7fcd0a2f9.png 

记录当前记录的头结点偏移, 下一个记录的偏移, free_ptr 的偏移 

在 mtr 中暂存当前 undo log 的 redo log

0925c658c2fc4287b6de0c05025b4107.png

 

记录当前这条 undo log 的 redo log, 实际上就是 保存了一下这条 undo log 的快照信息 

复制了一份数据到 mtr, mtr 表示 mysql 中的 Mini-Transaction

aa314b878d9c4c91b48a3594cb1b251b.png

 

undo 日志记录完成之后 更新相关元数据, 生成 roll_ptr

e8bfd22254c54a9180ad6154143c33f4.png

 

更新当前记录的 trx_id, roll_ptr

c3dbe674830746889ad1a7670f70c93e.png 

 

记录更新 undo 日志格式 

查看一下 待更新的记录信息, id 为 2, field1 为 ‘field12’

c656bedbf58345f5b2ffdd50b74cfc9d.png

 

undo 日志记录如下, 这里具体 拆分到每一个字节

a5529e52e51b498cabdf4841a6eaac07.png 

 

记录新增 undo 业务记录 

假设执行 sql 如下 “INSERT INTO `test`.`tz_test`(`field1`, `field2`) VALUES ('field11', '11');”  

从下图可以看到待插入记录的 id, field1, field2 的相关信息 

9d3560cfd67c4466bbbbd62bfa0d2bf7.png

 

记录带新增记录 当前的状态, 因为记录待新增 因此没有字段信息

这里仅仅记录 trx->undo_no, table_id, 主键信息, 当前记录偏移信息, 下一个记录偏移信息 

227d963e4543465ba8792ef848e90496.png

 

记录当前记录偏移信息, 下一个记录偏移信息, 记录当前 undo 记录的 redo 记录 

71cd8c6549264849a87a346e2873072f.png

 

 

记录新增 undo 日志格式 

 新增记录的 undo 日志信息如下, 记录相关的信息 主要是 id 

c65ca0804c9048d7a8495f92a5a1c06f.png

 

 

记录删除 undo 业务记录

执行 sql 如下 “delete from tz_test where id = 13;”

因为 mysql 这边先是做的逻辑删除, 因此 就是这边 undo 相关操作 和 记录更新一致, 这里不多赘述 

b33ec9e5f89a412dbabe0eeff5131337.png

 

 

记录新增 undo 的使用

执行 sql 如下 

“begin;

INSERT INTO `test`.`tz_test`(`id`, `field1`, `field2`) VALUES (1111, 'field11', '11');

rollback;

新增记录的 undo log, 的真实处理是 删除对应 主键 对应的记录

比如这里 查询条件为 ”id = 1111”

7596f3e2c10248d480b3928e1ef49841.png

 

具体的删除处理如下, 等价于 普通的 “delete from tz_test where id = 1111;”

3b20bd20164341568b14e4343ba31cd0.png

 

 

记录更新 undo 的使用 

执行 sql 如下 

“begin;

update tz_test set field1 = 'field33' where id = 2;

rollback;

 

如下这是 事务中的更新语句执行的上下文, field1 的字段由 ”field12” 更新为 ”field33”

55f611b202cf421ab0dba91181a50d37.png

 

如下 这是回滚的时候 更新记录的 undo 的处理 

37620d5af6664b8fbcf7106f028d62ae.png

 

这个 更新的回滚操作如下, 将 field1 字段从 “field33” 更新回 “field12”

e9aba54e56764f9cb598a906bcba5d51.png 

 

完 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【容器化】Kubernetes(k8s)

文章目录 概述Docker 的管理痛点什么是 K8s云架构 & 云原生 架构核心组件K8s 的服务注册与发现组件调用流程部署单机版部署主从版本Operator来源拓展阅读 概述 Docker 虽好用,但面对强大的集群,成千上万的容器,突然感觉不香了。 这时候就…

介绍一款 SaaS 服务器监控工具: CloudStats

导读CloudStats 是一个简单而强大的服务器监控和网络监控工具。使用 CloudStats,你可以监控来自世界上任何地方的服务器和网络的所有指标。 最棒的是你不需要有任何特殊的技术技能 - CloudStats 很容易安装在任何数据中心的任何服务器上。 CloudStats 允许你使用任…

一文了解ChatGPT Plus如何完成论文写作和AI绘图

2023年我们进入了AI2.0时代。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义,不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车,就有可能被淘汰在这个数字化时代,如何能高效地处理文本、文献查阅、PPT…

大势所趋!机器视觉替换传统人工,深眸科技以工业AI视觉赋能生产

如今,在工业4.0的浪潮下,人工智能技术凭借着优化生产流程、实现个性化定制、保障产品安全、促进产业变革等优势,逐渐成为制造业数智化转型的“利器”之一,其在工业生产中的广泛应用使传统制造业焕发生机。 机器视觉作为人工智能快…

vue + antd 动态增加表单并进行表单校验

<template><a-modalv-model:visible="visible":title="formData.id ? 编辑渠道 : 添加渠道":width="850":mask-closable="false":destroy-on-close="true"@ok="onSubmit"@cancel="onClose"&g…

Android SmartTable根据int状态格式化文字及颜色

private void initData() {List<UserInfo> list new ArrayList<>();list.add(new UserInfo("一年级", "李同学", 6, 1, 120, 1100, 450, 0));list.add(new UserInfo("一年级", "张同学", 6, 2, 120, 1100, 450, 1));list…

高转化率的软文都有哪些要素?媒介盒子分享

信息爆炸的时代下用户注意力成为稀缺资源&#xff0c;网络上的各个平台充斥着信息流广告的痕迹&#xff0c;在海量信息内容中&#xff0c;企业想要吸引用户注意力&#xff0c;提高转化率&#xff0c;就需要不断更新文案创意&#xff0c;今天媒介盒子就来分享&#xff1a;高转化…

关于漏洞怎么挖/SRC刷分技巧

Google谷歌爬虫WebRobot自动化SQL检测 这里先用之前的谷歌爬虫爬取足够多的url链接 我这里爬了差不多600条 再打开WebRobot工具,这个会发给大家 它的UI是这样的&#xff0c;里面集成了许多其它小工具&#xff0c;都可以使用 点击注入检测 右键导入URL文件即可 这四个选项…

SOLIDWORKS Electrical工程属性配置与图框

导读 很多工程师都是直接使用现有的图框&#xff0c;但是现有图框会遇到一些问题&#xff0c;自己想显示的内容不知道怎么设置出来&#xff0c;或者是图纸显示的内容太繁杂&#xff0c;行列号不符合自己的习惯。这些问题都是关于图框模板的设计。 一、关于工程属性设计的问题…

井盖位移监测,智能井盖智慧监测方式

在推动城市向智能化和高效化方向发展的过程中&#xff0c;科学技术发挥着至关重要的作用。智能井盖传感器作为科学技术进步的产物&#xff0c;正逐渐在城市管理过程之中崭露头角。这些看似不起眼的设备&#xff0c;虽然隐藏在井盖下方不被人们看到&#xff0c;但实实在在为人民…

html书本翻页效果,浪漫表白日记本(附源码)

文章目录 1.设计来源1.1 书本正面1.2 界面1-21.3 界面3-41.4 界面5-61.5 界面7-81.6 界面9-101.7 界面11-121.8 书本结尾 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/1…

基于MS16F3211芯片的触摸控制灯的状态变化和亮度控制(11.16)

电路板原理图 触摸脚选择&#xff1a;PB1、PB2、PB3、PB4、PB5 这里我感觉触摸脚PB5应该是PB0。 程序结构 程序逻辑 其实就是在HS16F3211_TkLib.c中存在与触摸相关的函数&#xff0c;然后在 每个按键封装一个专门对这个按键按下或者松开不同的状态执行不同的操作。 在main.c里…

Michael.W基于Foundry精读Openzeppelin第38期——AccessControlEnumerable.sol

Michael.W基于Foundry精读Openzeppelin第38期——AccessControlEnumerable.sol 0. 版本0.1 AccessControlEnumerable.sol 1. 目标合约2. 代码精读2.1 supportsInterface(bytes4 interfaceId)2.2 _grantRole(bytes32 role, address account)2.3 _revokeRole(bytes32 role, addre…

ERP智能管理系统:智能化的未来之路

ERP智能管理系统&#xff1a;智能化的未来之路 科技飞速发展&#xff0c;人工智能(AI)和大数据等先进技术的应用正在改变着企业的运营模式。其中&#xff0c;ERP智能管理系统在帮助企业实现智能化运营、提高效率、降低成本等方面发挥着越来越重要的作用。本文将为您详细介绍ERP…

有什么好用的后勤管理软件?学校后勤服务要怎么提升满意度?

后勤服务是院校管理中的重要一环&#xff0c;直接影响到师生的工作、学习和生活质量。师生作为学校的核心用户&#xff0c;对后勤服务的质量和满意度有着深刻的体验和感受。因此&#xff0c;他们的评价对于提升学校品牌形象、提高服务质量以及改进学校管理具有至关重要的作用。…

《rPPG》——(1)PyTorch——Windows环境配置

《rPPG》——&#xff08;1&#xff09;PyTorch——Windows环境配置 如何查看电脑是否已安装Python环境以及Python版本 anaconda对应python3.8的版本号是多少? 截止到我的知识截止日期&#xff08;2022年1月&#xff09;&#xff0c;Anaconda支持Python 3.8的版本号是Anacond…

易点易动固定资产管理系统场景应用二:集成本地OA/BPM系统

在企业的日常运营中&#xff0c;固定资产管理是一项重要的任务。为了实现高效的工作流程和准确的审批流程&#xff0c;易点易动固定资产管理系统提供了与本地OA/BPM系统的集成功能。本文将重点介绍易点易动固定资产管理系统在集成本地OA/BPM系统方面的应用场景&#xff0c;以帮…

html实现图片裁剪处理(附源码)

文章目录 1.设计来源1.1 主界面1.2 裁剪界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/134455169 html实现图片裁剪处理(附源码)&#xff0c;支持图片放大缩小&#…

Snipaste 截图悬浮工具【实用教程】

下载安装 Snipaste windows64位版本下载链接&#xff1a;https://pan.baidu.com/s/1i2L3JHxOGqkmX3lj2fUVHA?pwdeut6 无需安装&#xff0c;解压后即可使用 其他版本见官网 https://zh.snipaste.com/download.html 启动 Snipaste 双击解压后文件夹 Snipaste-2.8.8-Beta-x64 中…

亲测一款超实用的在线制作产品册工具,一看就会

最近&#xff0c;我一直在寻找一款简单易用的在线制作产品册工具&#xff0c;终于让我找到了一个超实用的神器&#xff01;这款工具不仅功能强大&#xff0c;而且操作简单&#xff0c;一看就会。 首先&#xff0c;这款工具提供了丰富的模板和素材&#xff0c;用户可以根据自己的…