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

相关推荐
数据知道27 分钟前
Go基础:正则表达式 regexp 库详解
开发语言·mysql·golang·正则表达式·go语言
2301_7720935611 小时前
tuchuang_后端_前端_注册登录
数据库·后端·网络协议·mysql·wireshark
K_i13411 小时前
中国电信用户行为实时分析系统运维实战
hadoop·mysql
武子康11 小时前
Java-141 深入浅出 MySQL Spring事务失效的常见场景与解决方案详解(3)
java·数据库·mysql·spring·性能优化·系统架构·事务
努力学习的小廉15 小时前
初识MYSQL —— 数据类型
android·数据库·mysql
William_cl16 小时前
【连载3】MySQL 的 MVCC 机制剖析
数据库·mysql
2351616 小时前
【MySQL】MVCC:从核心原理到幻读解决方案
java·数据库·后端·sql·mysql·缓存
Raymond运维19 小时前
MySQL包安装 -- RHEL系列(Yum资源库安装MySQL)
linux·数据库·mysql
菲兹园长1 天前
MySql(SQL)
数据库·sql·mysql
一只小bit1 天前
MySQL表的操作:创建—修改—删除流程解析
数据库·mysql·oracle