MVCC机制简介

  1. 概述
    MVCC(Multi-Version Concurrency Control)多版本并发控制,是MYSQL数据库提供的一种提高读写效率的机制,目的是尽量让写操作不阻塞读操作,并且读操作只能读可见版本的数据。

概念解析

  • 快照读
    指普通的select动作,只读select时的数据快照版本,后续修改不可见
  • 当前读
    指select for update 、select in share mode动作,会对读取的行记录加锁,保证读取的是最新版本的数据。在Repeatable Read可重复读隔离级别下,MVCC还会结合间隙锁来避免当前读出现幻读(即读到其他并行事务新增的数据行)
  1. 机制
    利用递增的事务id标识数据的版本,通过数据行的隐藏字段(最新写入事务id、undolog上一个版本指针)、读操作时生成Read View视图(表示了可见的事务id范围)以及undolog中的数据版本链来实现
  2. 不同隔离级别下的实现差异
  • 读已提交
    每次select都会创建视图
  • 可重复读
    只在事务内第一次select时创建视图
相关推荐
w-w0w-w3 小时前
SQL注入
网络·数据库·sql
tianyuanwo3 小时前
NetBox 数据库详解:当“关系型数据库”被装进一个网络运维的领域模型里
运维·数据库·netbox
一条泥憨鱼3 小时前
【计算机网络】短连接、长连接与连接池:从 TCP 握手到池化复用的完整链路
网络·数据库·网络协议·tcp/ip·计算机网络
IvorySQL4 小时前
深入 PostgreSQL WAL:从崩溃恢复到逻辑复制
数据库·postgresql
幽灵诶5 小时前
Mysql(基于测试的学习)
数据库·mysql
砚底藏山河5 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
宇宙无敌暴龙战士6666 小时前
MySQL 8 库表操作学习笔记:SQL 基础、库表管理、约束与用户授权全流程
数据库·sql·mysql·学习笔记·后端开发
猿究院_夏燊6 小时前
MySQL 的四种隔离级别
java·数据库·mysql
say_fall6 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
共享家95277 小时前
408 操作系统第一章
服务器·数据库·windows