标签:同步 可重复 enter 通过 持久性 The aci text 基础
这种情况常发生于转账与取款操作中。
时间顺序 | 转账事务 | 取款事务 |
---|---|---|
1 | 开始事务 | |
2 | 开始事务 | |
3 | 查询账户余额为2000元 | |
4 | 取款1000元,余额被更改为1000元 | |
5 | 查询账户余额为1000元(产生脏读) | |
6 | 取款操作发生未知错误,事务回滚,余额变更为2000元 | |
7 | 转入2000元,余额被更改为3000元(脏读的1000+2000) | |
8 | 提交事务 | |
备注 | 按照正确逻辑,此时账户余额应该为4000元 |
例子:
在事务1中,Jack读取了自己的工资为1000,但是此时事务1的操作还并没有完成 ,后面还有1次相同的读取操作。
在事务2中,这时财务人员修改了Jacck的工资为2000,并提交了事务。
在事务1中,Jack再次读取自己的工资时,工资变为了2000。
在一个事务中前后两次读取的结果并不致,导致了不可重复读。
标签:同步 可重复 enter 通过 持久性 The aci text 基础
原文地址:https://www.cnblogs.com/jone-chen/p/14309387.html