脏写(Dirty Write):一个事务修改了另一个未提交事务修改过的数据

脏读(Dirty Read):一个事务中多次读取同一字段时,读取到其他事务未提交的数据

不可重复读(Non-Repeatable Read):一个事务中多次读取同一字段时,读取到其他事务已提交的数据

幻读(Phantom):在一个事务中使用相同的 SQL 读取两次,第二次读取到了其他事务新插入的行

不可重复读和幻读的区别
  • 不可重复读的重点是内容修改或者记录减少比如多次读取一条记录发现其中某些记录的值被修改;
  • 幻读的重点在于记录新增比如多次执行同一条查询语句(DQL)时,发现查到的记录增加了。

幻读其实可以看作是不可重复读的一种特殊情况,单独把区分幻读的原因主要是解决幻读和不可重复读的方案不一样。