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条了吗,为什么又多出了两条多余的数据
  • 有点产生幻觉的意思,所以就是幻读了

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

最新评论