通过王者来帮你理解脏读不可重复读和幻读
Posted 离群灬
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过王者来帮你理解脏读不可重复读和幻读相关的知识,希望对你有一定的参考价值。
目录
前言:
在学习SQL语言中的TCL时,我们接触到了事务这个概念,然而对于多个事务同时操作一个数据库从而引发的事务并发问题上面,博主感觉有些困难,于是在去大佬们的博客学习之后,便有了这篇博客。
脏读:
脏读:一个事务读取到了另外一个事务未提交的数据
举例:
就好比打王者的时候,
你的队友对你说:我吃了张良大招,张良没大!!
你作为一个射手,但你不带怂的,你闪现开张良,直接被摁住,团战凉凉。
你队友其实欺骗了你,他后悔了,说其实是有大的。。。
总结就是他(一个事务)后悔(回滚)得晚了,在你听到了张良没大(脏数据),团战失利(脏读)之后。
不可重复读:
不可重复读:同一个事务中,多次读取到的数据不一致
举例:
也用王者来举例吧,
现在你是一名对抗路的操作型选手,你先是看了眼小地图(数据库),
发现高地还在(数据内容),问题不大。
于是你继续正在紧张又刺激的对线。然而在这个时候,敌人(另一个事务)已经开始推高地(修改数据内容)
过了一会儿,你单杀了对面,再看眼小地图,发现高地没了(两次读取数据内容不一致),你只得回城开始守家。
幻读:
幻读:一个事务读取数据时,另外一个事务进行更新,导致第一个事务读取到了没有更新的数据
幻读的成因和不可重复读是一样的,只是它针对的是数据总量不同的情况。
你开启了下一把对局,
现在的你仍然是一名对抗路的操作型选手,你还是先看了眼小地图(数据库),
发现防御塔还有9座(数据总量),没有问题。
于是你又开始紧张又刺激的对线。然而还是这个时候,敌人(另一个事务)已经开始推塔(修改数据总量)
过了一会儿,你再次单杀对手,开启小地图,发现防御塔只剩3座高地了(两次读取数据总量不一致),你逐渐成为了”纯御天花板“。
“高地保安”,“纯御天花板 ”
以上是关于通过王者来帮你理解脏读不可重复读和幻读的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因