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

相关推荐
麦麦大数据43 分钟前
F004 新闻可视化系统爬虫更新数据+ flask + mysql架构
爬虫·mysql·flask·可视化·新闻
白鹭9 小时前
MySQL(多表查询练习)
数据库·mysql
AI 嗯啦14 小时前
SQL详细语法教程(三)mysql的函数知识
android·开发语言·数据库·python·sql·mysql
杰克尼15 小时前
mysql-条件查询案例
数据库·mysql
你那是什么调调17 小时前
`SHOW PROCESSLIST;` 返回列详解(含义 + 单位)
mysql
云心雨禅19 小时前
网站突然崩了,此站点遇到了致命错误!
服务器·mysql
Menior_1 天前
【补充】数据库中有关系统编码和校验规则的简述
数据库·mysql·oracle
Kay_Liang1 天前
从聚合到透视:SQL 窗口函数的系统解读
大数据·数据库·sql·mysql·数据分析·窗口函数
诺亚凹凸曼1 天前
MySQLinnodb引擎普通索引和唯一索引的区别
数据库·mysql
星空下的曙光1 天前
MySQL → SQL → DDL → 表操作 → 数据类型 知识链整理成一份系统的内容
数据库·sql·mysql