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

相关推荐
Cloud云卷云舒10 小时前
云卷云舒:从Oracle/MySQL迁移到HaishanDB:迁移评估工具核心技术拆解
mysql·oracle·ai-native·haishandb·信创数据库替换
用户713335851562413 小时前
MySQL - 事务、redo/undo 日志与 MVCC
mysql
用户713335851562414 小时前
MySQL - InnoDB 的 Buffer Pool
mysql
欲速不达882016 小时前
Mysql并发DML锁等待的优化
数据库·mysql
L16247616 小时前
MySQL 全环境生产快速安装 + 完整配置手册(整合国产银河麒麟适配 + 主从补充版)
数据库·mysql
前端世界17 小时前
MySQL 基础入门(学习第4天)——约束与 DML 操作详解
数据库·学习·mysql
Vect__19 小时前
MySQL 数据类型和约束:从字段设计到表结构建模
数据库·mysql
Mico181 天前
MySQL 8.0.35 基于GTID 主从复制安装增强半同步复制
android·mysql·adb
CodexDave1 天前
MySQL事务隔离级别与MVCC机制解析
前端·数据库·mysql·nginx·性能优化·负载均衡
王琦03181 天前
生产环境中使用通用二进制包安装
mysql