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时创建视图
相关推荐
YaBingSec几秒前
玄机网络安全靶场:Hadoop YARN ResourceManager 未授权 RCE WP
大数据·数据库·hadoop·redis·笔记·分布式·web安全
m0_63564748几秒前
Qt打包含有第三方库的软件为应用程序——CQtDeployer
开发语言·数据库·qt
Aloudata5 分钟前
如何通过 NoETL 指标平台构建企业唯一指标计算中心
大数据·数据库·数据分析·指标平台
qq_40999093?6 分钟前
NoSQL数据库解析:Redis
数据库·redis·nosql
小碗羊肉7 分钟前
【MySQL | 第五篇】事务
数据库·mysql
dFObBIMmai8 分钟前
Python Celery任务队列怎么配_实现Web后台异步任务调度处理
jvm·数据库·python
于歌85210 分钟前
Oracle批处理操作方法
数据库·oracle
日取其半万世不竭11 分钟前
PostgreSQL 云服务器安装配置指南:从零开始搭建生产数据库
服务器·数据库·postgresql
@小柯555m13 分钟前
MySql(高级操作符--高级操作符练习(1))
数据库·sql·mysql
码农阿豪20 分钟前
Python 操作金仓数据库的完全指南(下篇):SQL执行、批量操作与扩展功能
数据库·python·sql