浅浅的聊聊MySQL的MVCC

readView:

有三个字段

creator_trx_id:记录当前事务的id

min_trx_id:记录未提交事务的id

max_trx_id:记录未开始的事务id

解决的是一个事务查询选择版本的问题,在内部定义了一些匹配规则和当前的一些事务id判断该访问哪个版本的数据,不同的隔离级别快照读是不一样的,最终的访问的结果不一样。

如果是rc(read committed)隔离级别,每一次执行快照读时生成ReadView,根据当前事务ID去undolog中找已提交的事务(id<min_trx_id中的最小值),如果是rr(repeatable read)隔离级别仅在事务中第一次执行快照读时生成ReadView,后续复用。

MVCC本质:通过undolog实现多个版本,与readView进行CAS操作(乐观锁)获取对应的结果。

读未提交:不加锁,也没有MVCC,操作的是数据源

读已提交:使用MVCC,每一次查询都需要创建快照(readView)

可重复读:使用MVCC,只有第一次查询才会创建快照(readView)这样才会避免不可重复读

串行化:未使用MVCC,直接就是表锁,串行执行,性能最差,不到万不得已 不用。

相关推荐
苹果醋310 分钟前
JAVA设计模式之观察者模式
java·运维·spring boot·mysql·nginx
今晚务必早点睡10 分钟前
MySQL 新手避坑指南:安装、区分、检查一步到位
数据库·mysql·adb
心本无晴.11 分钟前
拣学--基于vue3和django框架实现的辅助考研系统
vue.js·python·mysql·考研·django·dify
北友舰长36 分钟前
基于Springboot+thymeleaf快递管理系统的设计与实现【Java毕业设计·安装调试·代码讲解】
java·spring boot·mysql·校园管理·快递·快递系统
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ1 小时前
查询MySQL数据库表的结构和数据
数据库·mysql·oracle
脸大是真的好~1 小时前
MYSQL与B+树与索引相关面试题
数据库·b树·mysql
risc1234561 小时前
【Elasticsearch】副本恢复机制文件级(file-based)操作级(ops-based)顶级理解
java·mysql·lucene
玄斎10 小时前
MySQL 单表操作通关指南:建库 / 建表 / 插入 / 增删改查
运维·服务器·数据库·学习·程序人生·mysql·oracle
编程小Y11 小时前
MySQL 与 MCP 集成全解析(核心原理 + 实战步骤 + 应用场景)
数据库·mysql·adb
lvbinemail12 小时前
Grafana模板自动复制图表
数据库·mysql·zabbix·grafana·监控