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

相关推荐
RainbowSea35 分钟前
9-1. MySQL 性能分析工具的使用——last\_query\_cost,慢查询日志
数据库·sql·mysql
我爱松子鱼2 小时前
mysql之InnoDB Buffer Pool 深度解析与性能优化
android·mysql·性能优化
知初~7 小时前
出行项目案例
hive·hadoop·redis·sql·mysql·spark·database
子非衣9 小时前
MySQL修改JSON格式数据示例
android·mysql·json
钊兵10 小时前
数据库驱动免费下载(Oracle、Mysql、达梦、Postgresql)
数据库·mysql·postgresql·oracle·达梦·驱动
隔壁老王15612 小时前
mysql实时同步到es
数据库·mysql·elasticsearch
Hanson Huang14 小时前
【存储中间件API】MySQL、Redis、MongoDB、ES常见api操作及性能比较
redis·mysql·mongodb·es
LUCIAZZZ15 小时前
EasyExcel快速入门
java·数据库·后端·mysql·spring·spring cloud·easyexcel
yuanbenshidiaos15 小时前
【正则表达式】
数据库·mysql·正则表达式