mysql 多版本并发控制mvcc

  • 行级锁的一个变种
  • 避免了加锁,开销低
  • 非阻塞读操作,写操作是行级
  • 原理:使用数据在某个时间点的快照实现,不同事务在同一个时间可以看到同一个表中的不同数据。
  • 分类:乐观,悲观
  • 在一行中存储更多数据,检查工作也要增加,处理一些额外的内部操作。
  • 适用:rr,rc级别。ur会读到最新版本,sz会读取会锁定返回的每一行。

在这里插入图片描述

InnoDB通过为每个事务在启动时分配一个事务ID来实现MVCC。该ID在事务(A)首次读取任
何数据时分配。在该事务中修改记录时,将向Undo日志写入一条说明如何恢复该更改的
Undo记录,并且事务的回滚指针指向该Undo日志记录。这就是事务如何在需要时执行回
滚的方法。

当不同的会话(事务B)读取聚簇主键索引记录时,InnoDB会将该记录的事务ID与该会话的读取视
图进行比较。如果当前状态下的记录不应可见(更改它的事务尚未提交),那么Undo日
志记录将被跟踪并应用,直到会话达到一个符合可见条件的事务ID。这个过程可以一直
循环到完全删除这一行的Undo记录,然后向读取视图发出这一行不存在的信号。

相关推荐

  1. mysql版本并发控制mvcc

    2024-01-26 08:38:01       57 阅读
  2. MySQL- 版本并发控制MVCC

    2024-01-26 08:38:01       58 阅读
  3. MVCC版本并发控制

    2024-01-26 08:38:01       42 阅读
  4. MVCC-版本并发控制

    2024-01-26 08:38:01       39 阅读

最近更新

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

    2024-01-26 08:38:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-26 08:38:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-26 08:38:01       82 阅读
  4. Python语言-面向对象

    2024-01-26 08:38:01       91 阅读

热门阅读

  1. 低代码开发业务在AIGC时代的应用

    2024-01-26 08:38:01       59 阅读
  2. 第十一章认识Ajax(二)

    2024-01-26 08:38:01       45 阅读
  3. 智慧零售的趋势:零售业的未来

    2024-01-26 08:38:01       49 阅读
  4. mysql备份

    2024-01-26 08:38:01       47 阅读
  5. Acwing---786. 第k个数

    2024-01-26 08:38:01       55 阅读
  6. Flask 之旅 (一)

    2024-01-26 08:38:01       48 阅读
  7. python的Flask生产环境部署说明照做成功

    2024-01-26 08:38:01       44 阅读
  8. 开源计算机视觉库OpenCV详解

    2024-01-26 08:38:01       50 阅读
  9. 如何保证消息队列不丢失消息(以kafka为例)

    2024-01-26 08:38:01       42 阅读