1.1.1 避免脏读,演示不可重复读发生
l 开启两个窗口A,B
l 设置A窗口的隔离级别为read committed;
SET SESSION TRANSACTION ISOLATION LEVEL read committed;
l 分别在两个窗口中开启事务:
start transaction;
l 在B窗口中完成转账
update account set money = money - 1000 where name= ‘小张‘;
update account set money = money + 1000 where name= ‘小凤‘;
* 没有提交事务!!!
l 在A窗口中进行查询:
select from account;
发现这个时候没有转账成功!!!(没有查询到另一个事务未提交的数据:说明已经避免了脏读)。
l 在B窗口中提交事务
commit;
l 在A窗口查询
select * from account;
***** 发现这次的结果已经发生了变化!!!(已经发生不可重复读:一个事务已经读到了另一个事务提交的update的数据,导致多次查询结果不一致。)
原文地址:http://blog.51cto.com/13587708/2113573
时间: 2024-10-02 22:50:13