脏读(READ_UNCOMMIT)
一个事务能够读取其它事务未提交的数据。
例:A 给 账号里+100元,但是现在没有提交。这时B 读到 账号里的钱多了100。
然后A 发现加错了,改成加50元,然后提交。但是B却多读了50元。
不可重复读(READ_COMMIT)
一个事务在前后两次读取同一个数据时发现前后数据不一致。
例:A 开启事务,读取账号有100元,然后拿着这100元开始消费。花了100元,准备结账。这时B提交了账号-50元的事务。这时商店扣钱之前查询时发现只有50元。
幻读(REPEATEDABLE_READ)
一个事务能够对另一个事务操作的表添加/删除行
例:A 开启事务,读取学生表中男生的个数,发现是100名,然后准备删除一名男生,这时B 向学生表中插入了一名男生并提交事务。然后A提交事务。这时A查看男生个数,发现还是100。
串行化(SERIALIZEABLE)
一个事务操作过程中,会锁整张表。
例:A 开启事务,进行操作,这时B 想要读取表数据会失败。A事务提交后,B 才能读取数据。
总结
不可重复读的重点是修改 :
同样的条件 , 你读取过的数据 , 再次读取出来发现值不一样了
幻读的重点在于新增或者删除
同样的条件 , 第 1 次和第 2 次读出来的记录数不一样。