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

相关推荐
帅大大的架构之路20 小时前
mysql批量插入数据如何更快
数据库·mysql
Amber_3720 小时前
mysql 死锁场景 INSERT ... ON DUPLICATE KEY UPDATE
数据库·mysql
思成不止于此1 天前
【MySQL 零基础入门】MySQL 约束精讲(一):基础约束篇
数据库·笔记·sql·学习·mysql
逐梦吧!旅行者1 天前
Linux MySQL 5.7用户管理与用户密码的设置问题
linux·mysql
NaiLuo_451 天前
MySQL基本查询
数据库·mysql
刺客xs1 天前
MYSQL数据库------多表查询
数据库·mysql
卡尔特斯1 天前
Windows MySQL 8.4 配置指南、用户创建、权限管理
mysql
大学生资源网1 天前
java毕业设计之面向校园的助力跑腿系统设计与实现源码(源码+文档+数据库)
java·数据库·mysql·毕业设计·源码·springboot
卡尔特斯1 天前
Mac Mysql 快速安装与可视化(详细流程)
mysql
四谎真好看1 天前
MySQL 学习笔记(进阶篇1)
笔记·学习·mysql·学习笔记