MySQL并发问题区别-MVCC如何解决的

脏读

事务a,事务b,b读到了a刚修改未提交的数据

不可重复读

针对同一行记录,两次读到的结果不一致

(范围是一行)

幻读

范围比不可重复读大很多,是表的范围,事务a第一次查的时候不存在,后面事务b插入提交,事务a第二次查的时候又发现多了数据,仿佛存在幻影

脏读是什么措施都没有,MVCC解决的主要是RC和RR

RC是读已提交,每次查询新建一个ReadView,通过MVCC规则确定访问数据的历史版本

RR是可重复读,只有事务第一次Select才会新建ReadView,后续查询除非是本事务修改或者显式当前读(Select * From 。。for Update/delete/insert),否则查询结果直接复用前面的ReadView,直接返回旧的读取结果。

MVCC本质上是无锁实现,乐观锁思想,提高了并发能力,比锁的效率要高很多

相关推荐
Lisonseekpan13 分钟前
为什么要避免使用 `SELECT *`?
java·数据库·后端·sql·mysql·oracle
Wilson Chen19 分钟前
深入理解 MySQL 事务与锁机制:从 ACID 到 Next-Key Lock 的实证之旅
java·数据库·mysql
无敌的牛1 小时前
MySQL的开始,MySQL的安装
数据库·mysql
Zxxxxxy_1 小时前
【MYSQL】增删改查
java·数据库·mysql
木辰風1 小时前
如何在MySQL中搜索JSON数据,并去除引号
数据库·mysql·json
计算机学姐2 小时前
基于SpringBoo+Vue的医院预约挂号管理系统【个性化推荐算法+可视化统计】
java·vue.js·spring boot·mysql·intellij-idea·mybatis·推荐算法
计算机学姐3 小时前
基于微信小程序的奶茶店点餐平台【2026最新】
java·vue.js·spring boot·mysql·微信小程序·小程序·mybatis
半路_出家ren4 小时前
图书销售系统数据库设计方案
数据库·mysql·子查询·ddl·dml·数据库设计·分组查询
ayaya_mana5 小时前
MySQL忘记Root密码,详细找回密码步骤
数据库·mysql·adb
顾三殇5 小时前
【MySQL】win 10 / win11:mysql 5.7 下载、安装与配置
数据库·mysql