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

相关推荐
秋92 小时前
MySQL 8.0.46 与 MySQL 9.7.0在sql语句方面的区别并举例说明
数据库·sql·mysql
Amazinqc2 小时前
Mysql数据库数据软隔离的并发死锁情况
数据库·mysql·死锁
fTiN CAPA2 小时前
Linux系统离线部署MySQL详细教程(带每步骤图文教程)
linux·mysql·adb
WL_Aurora3 小时前
IDEA 连接 MySQL 数据库保姆级教程
数据库·mysql·intellij-idea
Fan3 小时前
MySQL / PostgreSQL DDL 审核自动化:从人工 review 到 CI 拦截
mysql
MandalaO_O4 小时前
MySQL:数据库约束
数据库·mysql
薪火铺子5 小时前
MySQL InnoDB 索引底层:B+树深度解析
数据库·b树·mysql
战南诚6 小时前
mysql的坑 - count计数
数据库·mysql
薪火铺子6 小时前
MySQL 性能优化:慢查询与索引优化实战
数据库·mysql·性能优化
小江的记录本7 小时前
【MySQL】《MySQL基础架构 面试核心考点问答清单》
前端·数据库·后端·sql·mysql·adb·面试