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时创建视图
相关推荐
ChineHe13 小时前
Redis数据类型篇002_详解Strings核心命令与存储结构
数据库·redis·缓存
清水白石00813 小时前
《从零到进阶:Pydantic v1 与 v2 的核心差异与零成本校验实现原理》
数据库·python
电商API&Tina13 小时前
京东 API 数据采集接口接入与行业分析
运维·服务器·网络·数据库·django·php
柠檬叶子C14 小时前
PostgreSQL 忘记 postgres 密码怎么办?(已解决)
数据库·postgresql
864记忆14 小时前
Qt创建连接注意事项
数据库·qt·nginx
小小bugbug15 小时前
mysql查询的原始返回顺序与limit分页优化
mysql·adb
毕设十刻15 小时前
基于Vue的迅读网上书城22f4d(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
薛定谔的猫198215 小时前
Langchain(十二)LangGraph 实战入门:用流程图思维构建 LLM 工作流
数据库·microsoft
坐吃山猪16 小时前
ChromaDB02-代码实战
数据库·向量数据库·chromadb
摇滚侠16 小时前
MySQL 中 utf8mb4 字符集,字母a占几个字节,一个汉字占几个字节 / MySQL 中 utf8mb3 字符集,字母a占几个字节,一个汉字占几个字节
数据库·mysql