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

相关推荐
Whitemeen太白1 小时前
查询子级分类、父级分类、叶子节点分类(MySQL / Oracle )
数据库·mysql·oracle
一只游鱼2 小时前
langchain4j+mysql+历史记录
mysql·langchain4j
不爱写程序的东方不败3 小时前
MySQL出现慢查询或者主从延迟的问题,怎么做根因分析?
数据库·mysql
努力努力再努力wz3 小时前
【MySQL入门系列】掌握表数据的 CRUD:DML 核心语法与执行逻辑解析
android·开发语言·数据结构·数据库·c++·b树·mysql
chy000015 小时前
MySQL
mysql
ん贤5 小时前
数据库事务
数据库·mysql·事务
爱学习的小邓同学5 小时前
MySQL --- MySQL库和表的操作
数据库·mysql
Bert.Cai6 小时前
MySQL简介
数据库·mysql
摇滚侠6 小时前
Redis 和 MySQL 数据同步方案,ElasticSearch 和 MySQL 数据同步方案
java·redis·mysql
披着羊皮不是狼6 小时前
(9)批量生成文章并同步存入 MySQL 和 Redis
数据库·redis·mysql