标签:city llb 完成 提交数据 mic sql UNC ted eve
时间顺序 | 转账事务 | 取款事务 |
---|---|---|
1 | 开始事务 | |
2 | 开始事务 | |
3 | 查询账户余额为2000元 | |
4 | 取款1000元,余额被更改为1000元 | |
5 | 查询账户余额为1000元(产生脏读) | |
6 | 取款操作发生未知错误,事务回滚,余额变更为2000元 | |
7 | 转入2000元,余额被更改为3000元(脏读的1000+2000) | |
8 | 提交事务 | |
备注 | 按照正确逻辑,此时账户余额应该为4000元 |
时间顺序 | 事务A | 事务B |
---|---|---|
1 | 开始事物 | |
2 | 第一次查询,小明的年龄为20岁 | |
3 | 开始事务 | |
4 | 其他操作 | |
5 | 更改小明的年龄为30岁 | |
6 | 提交事务 | |
7 | 第二次查询,小明的年龄为30岁 | |
备注 | 按照正确逻辑,事务A前后两次读取到的数据应该一致 |
时间顺序 | 事务A | 事务B |
---|---|---|
1 | 开始事物 | |
2 | 第一次查询,数据总量为100条 | |
3 | 开始事务 | |
4 | 其他操作 | |
5 | 新增100条数据 | |
6 | 提交事务 | |
7 | 第二次查询,数据总量为200条 | |
备注 | 按照正确逻辑,事务A前后两次读取到的数据总量应该一致 |
(1)不可重复读是读取了其他事务更改的数据,针对update操作
解决:使用行级锁,锁定该行,更改数据操作完成后才释放该锁,这个时候才允许其他事务事务读取。
(2)幻读是读取了其他事务新增的数据,针对insert与delete操作,A事物操作受整张表的影响
解决:使用表级锁,锁定整张表,事务新增删除数据之后才释放该锁,这个时候才允许其他事务读取数据总量。
标签:city llb 完成 提交数据 mic sql UNC ted eve
原文地址:https://www.cnblogs.com/zpyu521/p/12304578.html