MVCC机制(重要知识点)

文章目录

  • 前言
  • MVCC
    • [read View](#read View)
    • [聚簇索引记录中的两个跟事务有关的隐藏列、undo 日志](#聚簇索引记录中的两个跟事务有关的隐藏列、undo 日志)
  • 总结

前言

前两天关于事务的文章。
1.MySQL事务(基础入门)(高频考点)
2.MySQL事务的隔离级别(高频面试题)

今天来讲一讲 MVCC 的机制,MVCC 是什么?


MVCC

MVCC

英文名:Multi-Version Concurrency Control

中文名:多版本并发控制

MySQL 默认的存储引擎 InnoDB,InnoDB 是支持事务的,事务的实现就是靠 MVCC 来实现的。

MVCC 的实现相关的技术是

  1. read View
  2. 聚簇索引记录中的两个跟事务有关的隐藏列
  3. undo 日志

read View

Read View 是什么?一种实现 MVCC 的技术。

Read View 四个字段是什么?如下图

  1. Creator_trx_id:创建该 Read View 的事务的事务Id。
  2. m_ids:创建该 Read View 的事务时,数据库内的"活跃且未提交"的事务。
  3. min_trx_id:创建该 Read View 的事务时数据库内的"活跃且未提交"的事务中的最小的事务id。
  4. max_trx_id:创建该 Read View 的事务时数据库给下一个事务的id值。当创建新的事务时就会使用这个事务id。

聚簇索引记录中的两个跟事务有关的隐藏列、undo 日志

当我们没有设定自增的主键id且没有一个唯一不为空的字段时,数据库会默认创建一个隐藏的字段值作为主键。

而数据库还有两个与事务有关的隐藏列。

分别未:trx_id,roll_pointer,如图

trx_id:该数据当前的事务id

roll_pointer:回滚点,指向undo日志,为了就是能回滚到之前的数据。

undo日志:undo日志,用于记录当前事务数据的前一个事务的数据。

比如,上图的undo日志就是

这种roll_pointer 练成一条又一条链的,我们就叫做版本链。

而这三种技术 Read View、两个隐藏列,undo 日志的运行机制就是MVCC。


总结

MVCC,Multi-Version Concurrency Control ,多版本并发控制。

MVCC 的实现相关的技术是

  1. read View
  2. 聚簇索引记录中的两个跟事务有关的隐藏列
  3. undo 日志

Read View 由四个字段组成

  1. Creator_trx_id:创建该 Read View 的事务的事务Id。
  2. m_ids:创建该 Read View 的事务时,数据库内的"活跃且未提交"的事务。
  3. min_trx_id:创建该 Read View 的事务时数据库内的"活跃且未提交"的事务中的最小的事务id。
  4. max_trx_id:创建该 Read View 的事务时数据库给下一个事务的id值。当创建新的事务时就会使用这个事务id。

聚簇索引记录中的两个跟事务有关的隐藏列

  1. trx_id:该数据当前的事务id
  2. roll_pointer:回滚点,指向undo日志,为了就是能回滚到之前的数据。

每一个 roll_pointer 都会连接 undo 日志上一条事务的数据。形成版本链。

这也就是MVCC。


有启发点个赞 🌹

好文章不要错过,最近給大家分享的文章

MySQL的基础知识

1.MySQL的基础架构
2.SQL语句的执行流程
3.MySQL 的存储引擎

MySQL 索引

1.MySQL索引入门(一文搞定)
2.MySQL索引面试题(高频)

MySQL 事务
1.MySQL事务(基础入门)(高频考点)
2.MySQL事务的隔离级别(高频面试题)

预计下篇分享:事务相关面试题(查漏补缺)或MySQL的锁

本篇参考:小林coding

我是小辉,正在进行 Java 实习的 24 届应届毕业生。欢迎关注,持续分享,包括但不限于技术文章。全网同名...

相关推荐
摇滚侠10 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 12
java·数据库·笔记
川石课堂软件测试10 小时前
学习软件测试需掌握的一些知识
数据库·python·sql·功能测试·网络协议·mysql·http
2501_9377671611 小时前
自建 SQL 数据库定时备份踩坑复盘与落地思路
数据库·sql
silvamux_12 小时前
10款模型写种草笔记:可发布性、返工来源与成本数据缺口复盘
java·数据库·笔记
I Am a robert girl14 小时前
从 GameHorizon 拆解多时间尺度游戏评测:数据管线、离线基准与在线回放的三层设计
数据库·游戏·多时间尺度·数据管线·游戏评测·离线基准·在线回放
躺柒14 小时前
读数据安全架构设计与实践17安全架构案例(下)
数据库·安全·零信任·安全架构·防火墙·无边界
SelectDB14 小时前
实时更新排错现场:导入了却查到旧数据,和 FINAL 越加越慢的两条路
大数据·数据库·数据分析
SelectDB15 小时前
拿 Planet 的账单一行行对下来,我总结出三个可自查的校验点
大数据·数据库·数据分析
SelectDB15 小时前
Apache Doris + Vane:让多模态数据进入业务分析
大数据·数据库·数据分析
pjj1985417 小时前
ClickHouse 与 Doris 数据库技术梳理:看懂分析型数据库
数据库·clickhouse