脏读
幻读
不可重复读
丢失更新
用户 余额 有效状态
张三 1000 正常
事务A读取到张三的数据,更新余额为900但没commit,此时事务B去读取张三余额为900,之后事务A回滚余额为1000,造成事务B脏读
用户 余额 卡类型
张三 1000 一类卡
事务A需要读取两次张三的数据,第一读取到张三的余额为1000,此时事务B更新张三的余额为900,事务A第二次读取张三的数据发现余额跟第一次不一致,即两次读到的余额不可重复,称为不可重复读。
与不可重复读类似,只不过事务A想查询两次张三的记录,中途事务B新增了一条张三的记录,导致事务A两次读取到的记录数不一致,称为幻读。
丢失更新:事务A和B都拿到张三的余额,事务A减去100提交,此时事务B减去200提交,余额变成800,按道理余额剩700才对,这种情况下造成事务A更新丢失。