mysql之脏读、不可重复读、幻读的区别及说明
更新时间:2022年07月20日 10:45:08 作者:WalkerShen
这篇文章主要介绍了mysql之脏读、不可重复读、幻读的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
mysql脏读、不可重复读、幻读的区别
脏读(Drity Read)
某个事务已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,
前一个RollBack了操作,则后一个事务所读取的数据就会是不正确的。
例如:
- 一开始小明将数据A修改成了B,之后这个时候小红读取了B
- 但是由于小明将数据回滚了,修改成了A
- 那么在这个时间点,小红拿的数据就是错误的了,正确的数据应该为A
不可重复读(Non-repeatable read)
在一个事务的两次查询之中数据不一致,这可能是两次查询过程中间插入了一个事务更新的原有的数据。
例如:
- 小明一开始查询数据时A,但是后面查询的数据是B
- 因为中途小红将数据改成了B
- 这个时候就是两次查询数据不一致的问题
幻读(Phantom Read)
- 在一个事务的两次查询中数据笔数不一致
- 例如有一个事务查询了几列(Row)数据,而另一个事务却在此时插入了新的几列数据
- 先前的事务在接下来的查询中,就会发现有几列数据是它先前所没有的
例如:
- 一开始小明修改了全部数据,5条数据,然后小红在过程中新增了2条数据,然后小明再次查询的时候
- 发现我不是已经改了全部的数据5条了吗,为什么又多出了两条多余的数据
- 有点产生幻觉的意思,所以就是幻读了
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
如何使用mysqladmin获取一个mysql实例当前的TPS和QPS
这篇文章主要介绍了如何使用mysqladmin这个工具来获取一个mysql实例当前的TPS和QPS,帮助大家更好的管理数据库,感兴趣的朋友可以了解下2020-11-11mysql 8.0.18.zip安装配置方法图文教程(windows 64位)
这篇文章主要为大家详细介绍了mysql 8.0.18.zip安装配置方法图文教程,以及卸载以前数据库的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2019-10-10最全的mysql 5.7.13 安装配置方法图文教程(linux) 强烈推荐!
这篇文章主要为大家详细介绍了linux下mysql 5.7.13 安装配置方法图文教程,感兴趣的小伙伴们可以参考一下2016-08-08MySQL 学习总结 之 初步了解 InnoDB 存储引擎的架构设计
这篇文章主要介绍了MySQL 学习总结 之 初步了解 InnoDB 存储引擎的架构设计,文中给大家提到了mysql存储引擎有哪些,本文给大家介绍的非常详细,需要的朋友可以参考下2020-02-02
最新评论