1. MVCC(多版本并发控制)

概念
MVCC(Multi-Version Concurrency Control)是一种数据库并发控制机制,用于解决 读写冲突,提高数据库并发性能。MySQL InnoDB 存储引擎使用 MVCC 来实现 非阻塞读(即读取时不加锁)。

核心原理

  • 每行数据在内存中有多个版本。

  • 每个版本包含两个隐藏列:

    • trx_id:记录创建该版本的事务 ID。

    • roll_pointer(或 undo_pointer):指向旧版本 Undo Log。

  • 读取数据时,事务根据 自己的快照版本 决定看到哪个版本的数据。

作用

  1. 支持 一致性读(Consistent Read)

  2. 避免读操作阻塞写操作

  3. 与事务隔离级别结合使用(如 Repeatable Read)

举例

  • 事务 A 读取数据时看到的版本是事务开始时的快照

  • 事务 B 更新同一行数据时,会生成新版本,并在 Undo Log 中保存旧版本

  • 事务 A 仍然看到旧版本,不会被阻塞


2. Redo Log(重做日志)

概念
Redo Log 是 InnoDB 的 物理日志,用于 保证事务的持久性(Durability)

特点

  • 顺序写入磁盘,性能高

  • 数据写入前先写 Redo Log,再刷入数据页(Write-Ahead Logging)

  • 崩溃恢复时,通过 Redo Log 恢复已提交事务的数据

顺序流程(插入数据示例)

  1. 事务写入 Redo Log(WAL,顺序追加)

  2. 数据页写入缓冲池

  3. 事务提交时,Redo Log 刷盘(保证持久性)

作用

  • 崩溃恢复:只要 Redo Log 存在,已提交的数据可以恢复

  • 提高写入性能:顺序写比随机写快


3. Undo Log(回滚日志)

概念
Undo Log 是 InnoDB 的 逻辑日志,用于 事务回滚MVCC 版本管理

特点

  • 每条修改操作都会记录 Undo Log

  • 保存的是旧数据版本

  • 写操作失败或事务回滚时,用 Undo Log 恢复数据

作用

  1. 事务回滚:事务出错时,可通过 Undo Log 回到操作前状态

  2. MVCC 读:一致性读时,事务可通过 Undo Log 获取旧版本数据

示例

  • 数据库原值:A = 10

  • 事务修改:A = 20

  • Undo Log 保存旧值 A = 10

  • 事务回滚时,用 Undo Log 恢复 A = 10


4. Redo Log vs Undo Log

特性Redo LogUndo Log
类型物理日志逻辑日志
存储位置磁盘顺序写内存 + 磁盘
用途崩溃恢复回滚、MVCC版本读取
记录内容新数据旧数据
持久性持久化(保证事务提交)临时(事务回滚后可释放)

5. 总结

  • MVCC:保证高并发下的一致性读,靠 Undo Log 保存历史版本

  • Redo Log:保证事务提交的持久性,顺序写入磁盘

  • Undo Log:支持事务回滚和 MVCC 版本管理

理解技巧

  • Redo Log = Ctrl+S(存储最新修改,保证不会丢)

  • Undo Log = Ctrl+Z(保存历史版本,可以撤回操作)

  • MVCC = 时间旅行(每个事务看到自己时间点的版本)

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

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

相关文章

OpenCV-Python Tutorial : A Candy from Official Main Page(五)

4.5FAST Algorithm for Corner Detection 4.5.1FAST算法 我们已了解多种特征检测器,其中许多效果出色。但从实时应用的角度来看,它们的速度仍不够快。一个典型例子是计算资源有限的SLAM(同步定位与建图)移动机器人。 为解决此问…

LINUX 91 SHELL:删除空文件夹 计数

问题 [rootweb ~]# find -type f -exec echo "file:{}" $path; find: 遗漏“-exec”的参数 您在 /var/spool/mail/root 中有邮件[rootweb ~]# $path/root -bash: /root: 没有那个文件或目录 您在 /var/spool/mail/root 中有新邮件 [rootweb ~]# path/root [rootweb ~…

视频软解码技术详解:原理、应用与未来发展

视频软解码的基本原理 概念解析:CPU主导的通用解码方式 视频软解码是一种完全依赖通用CPU执行解码算法的视频还原技术,其核心特征在于不依赖任何专用硬件模块,而是通过软件程序调用CPU的通用计算能力完成压缩视频数据的解码过程[1][2]。与硬…

线性回归中梯度下降与正规方程以及拟合问题与正则化

线性回归实战指南:从理论到实践 目录 线性回归理论基础机器学习项目开发流程波士顿房价预测实战梯度下降与正规方程模型评估指标拟合问题与正则化总结与展望 1. 线性回归理论基础 1.1 什么是线性回归? 线性回归是一种监督学习算法,用于预…

为什么46.1k程序员都在用这个AI绘画神器?我体验一周后终于明白了

大家好,我是顾北,一名AI应用探索者,也是GitHub开源项目收集者。说起AI绘画这事儿,我之前真的是又爱又恨。上个月想给朋友搞张生日贺图,结果在Stable Diffusion WebUI里折腾了大半天。采样步数?CFG比例&…

Java基础第8天总结(map遍历、Stream流)

选中一部分代码,然后CTRLALTT,可以在外面套上while循环,try..catch之类的小案例:电影信息管理模块:用户可以上架、查询、下架、下架某个主演参演的电影package Demo;import lombok.AllArgsConstructor; import lombok.Data; impor…

总线矩阵的原理

总线矩阵(Bus Matrix)是多主设备共享多从设备的智能连接与仲裁核心,本质是一个“灵活的交叉开关阵列”,用于解决多个主设备(如CPU、DMA、GPU)同时访问多个从设备(如内存、外设、存储芯片&#x…

硬件开发_基于Zigee组网的果园养殖监控系统

一.系统概述 果园环境监控系统功能如下: 核心控制器:以STM32为核心控制器,承担整体的数据采集、处理及控制任务。环境参数监测:集成温度传感器、CO₂传感器、光照传感器和土壤湿度传感器,可实时采集果园内的温度、二氧…

K8s调度核心:从Pod分配到节点优化

在 Kubernetes(K8s)中,Pod 调度是指 K8s 系统根据特定规则和策略,将 Pod 合理分配到集群中的某个节点(Node)上运行的过程。其核心目标是确保 Pod 在合适的节点上高效、稳定地运行,充分利用集群资…

Tomcat 企业级运维实战系列(四):Tomcat 企业级监控

Tomcat 企业级运维实战系列(四):Tomcat 企业级监控一:监控工具1)概述2)流程3)部署二:监控命令1)jps2)jstack3)jmap4)MAT 工具分析三&a…

技术干货丨HyperMesh 新界面功能与技术升级解析

全文内容选自 Altair 区域技术交流会华东站Altair 高级技术经理 张晨《HyperWorks 2025:下一代建模可视化和二次开发平台》演讲1、引言今天我为大家介绍 HyperMesh——这个大家既熟悉又陌生的工具。说熟悉,是因为它一直是工程仿真领域的主流建模软件&…

《IC验证必看|随机稳定性 / 再现性》

同一用例 A 机 pass、B 机 fail?——SystemVerilog 随机稳定性 / 可复现性全攻略(含代码与排查清单)你该到什么水平?(对标 20k / 25k / 30k) 20k(入门会用) 会 randomize()、$urando…

字符编码的本质

目的 最近做一个加密方面的研究,加密之后的二进制,通过转码之后,再也找不回之前的二进制了。 怎么试都不行,真是非常得奇怪!!!!先说说字符编码基础知识 在信息技术的海洋中&#xff…

网格图--Day03--网格图DFS--2658. 网格图中鱼的最大数目,1034. 边界着色,1020. 飞地的数量

网格图–Day03–网格图DFS–2658. 网格图中鱼的最大数目,1034. 边界着色,1020. 飞地的数量 今天要训练的题目类型是:【网格图DFS】,题单来自灵艾山茶府。 适用于需要计算连通块个数、大小的题目。 部分题目做法不止一种&#xff0…

新能源车焊接中发那科机器人保护气省气方法

在新能源汽车制造领域,焊接工艺是保障车身结构强度与安全性的关键环节,发那科焊接机器人凭借高精度与稳定性成为产线主力设备。保护气体消耗在焊接成本中占比显著,寻找高效省气方法成为行业降本增效的核心需求。WGFACS节气装置以智能化控制技…

CornerNet2025再研究---将目标检测问题视作关键点检测与配对

CornerNet于2019年3月份提出,CW近期回顾了下这个在当时引起不少关注的目标检测模型,它的亮点在于提出了一套新的方法论——将目标检测转化为对物体成对关键点(角点)的检测。通过将目标物体视作成对的关键点,其不需要在图像上铺设先验锚框(anc…

【C++】vector(2)

目录 1. insert的实现 2. 迭代器失效 2.1 迭代器失效的两种情况 指向已释放的内存(物理失效) 元素移动导致迭代器指向错误(逻辑失效) 2.2 修改代码 3. erase的实现 ​编辑修改代码 4. resize的实现 5. 构造函数 5.1 默认…

机器翻译:python库translatepy的详细使用(集成了多种翻译服务)

更多内容请见: 机器翻译修炼-专栏介绍和目录 文章目录 一、translatepy概述 1.1 translatepy介绍 1.1 安装 二、基本使用 2.1 初始化 `Translator` 2.2 文本翻译 2.3 语言检测 2.4 获取翻译备选方案 2.5 单词音标获取 2.6 语音合成 2.7 例句查询 2.8 拼写检查 三、高级功能 3.…

Spring Bean生命周期的完全指南

简介:超越Bean——揭开Spring Bean的隐秘生活 想象一场复杂宏大的舞台剧。作为观众,我们看到的是最终的演出——一个流畅运行的应用程序。但在这光鲜的幕后,隐藏着一套严谨细致的流程:选角(实例化Bean)、试…

网络安全A模块专项练习任务九解析

任务九:Linux操作系统安全配置-2任务环境说明: (Linux)系统:用户名root,密码1234561. 设置禁止使用最近用过的6个旧密码,将配置文件中对应的部分截图;编辑/etc/pam.d/system-auth文件,找到passw…