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

相关推荐
飞yu流星2 小时前
mysql 基础
数据库·mysql·oracle
零陵上将军_xdr2 小时前
MySQL 事务写入流程详解
android·数据库·mysql
乐之者v2 小时前
20多个表,每个都有userId 和其他几个属性,要根据userId把他们全部汇总,如何处理?
java·mysql
我登哥MVP3 小时前
【Spring6笔记】 - 11 - JDBCTemplate
java·数据库·spring boot·mysql·spring
Ahern_4 小时前
PolarDB 8.4.19 单节点安装
mysql·centos
2401_827499994 小时前
python项目实战11-正则表达式基础
python·mysql·正则表达式
Dream of maid5 小时前
Mysql(6)关联查询
数据库·mysql
源来猿往5 小时前
mysql转postgresql【平移】
数据库·mysql·postgresql
Dream of maid5 小时前
Mysql(7)子查询
android·数据库·mysql
农村小镇哥6 小时前
PHP递归遍历+MYSQL介绍+MYSQL基本操作
开发语言·mysql·php