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本质上是无锁实现,乐观锁思想,提高了并发能力,比锁的效率要高很多

相关推荐
2301_7795037616 分钟前
MySQL主从同步--主从复制进阶
数据库·mysql
beijingliushao22 分钟前
58-正则表达式
数据库·python·mysql·正则表达式
刘一说2 小时前
Spring Boot+Nacos+MySQL微服务问题排查指南
spring boot·mysql·微服务
2301_779503762 小时前
MySQL集群高可用架构---mysql高可用之组复制 (MGR)
数据库·mysql·架构
叁沐2 小时前
MySQL 31 误删数据后除了跑路,还能怎么办?
mysql
MyFreeIT4 小时前
MySQL Function
数据库·mysql
白鹭5 小时前
MySQL主从复制进阶(GTID复制,半同步复制)
linux·运维·数据库·mysql·集群
叫我Zoe就行5 小时前
MySQL集群——主从复制
linux·数据库·学习·mysql
叫我龙翔5 小时前
MySQL】从零开始了解数据库开发 --- 表的操作
数据库·mysql·数据库开发
叫我龙翔6 小时前
【MySQL】从零开始了解数据库开发 --- 初步认识数据库
数据库·mysql·数据库开发