MVCC------Mysql并发事务控制的工具

一.MVCC是什么

MVCC 是 Multi-Version Concurrency Control(多版本并发控制)的缩写,是数据库系统中常用的一种并发控制方法。在MVCC 中,数据库系统可以同时维护多个版本的数据,每个事务在读取数据时会看到一个一致性的快照,从而实现并发访问而不会出现数据不一致的情况。这种机制能够提高数据库系统的并发性能和并发控制能力。

二.原理

1.隐藏的默认字段

在这里插入图片描述

2.Undo log

在这里插入图片描述

3.Undo log版本链

在这里插入图片描述

4. ReadView

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三.回答

其中mvcc的意思是多版本并发控制。指维护一个数据的多个版本,使得读写操作没有冲突,它的底层实现主要是分为了三个部分,第一个是隐藏字段,第二个是undo log日志,第三个是readView读视图

隐藏字段是指:在mysql中给每个表都设置了隐藏字段,有一个是trx_id(事务id),记录每一次操作的事务id,是自增的;另一个字段是roll_pointer(回滚指针),指向上一个版本的事务版本记录地址

undo log主要的作用是记录回滚日志,存储老版本数据,在内部会形成一个版本链,在多个事务并行操作某一行记录,记录不同事务修改数据的版本,通过roll_pointer指针形成一个链表

readView解决的是一个事务查询选择版本的问题,在内部定义了一些匹配规则和当前的一些事务id判断该访问那个版本的数据,不同的隔离级别快照读是不一样的,最终的访问的结果不一样。如果是rc隔离级别,每一次执行快照读时生成ReadView,如果是rr隔离级别仅在事务中第一次执行快照读时生成ReadView,后续复用

相关推荐

  1. mvcc 并发事务控制

    2024-03-11 10:08:02       57 阅读
  2. mysql MVCC(多版本并发控制)实现原理

    2024-03-11 10:08:02       48 阅读
  3. MySQL InnoDB 引擎多版本并发控制MVCC

    2024-03-11 10:08:02       32 阅读
  4. mysql多版本并发控制mvcc

    2024-03-11 10:08:02       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-11 10:08:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-11 10:08:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-11 10:08:02       87 阅读
  4. Python语言-面向对象

    2024-03-11 10:08:02       96 阅读

热门阅读

  1. PHP将PDF转成多个PNG文件

    2024-03-11 10:08:02       45 阅读
  2. Django的上下文

    2024-03-11 10:08:02       45 阅读
  3. Golang如何使用命令行-- flag库

    2024-03-11 10:08:02       46 阅读
  4. habitat中的坑(一):训练模型的时候找不到数据

    2024-03-11 10:08:02       42 阅读
  5. 【RHCSA问答题】第十章 配置和保护SSH

    2024-03-11 10:08:02       39 阅读