MySQL:隔离性问题(脏读)&回滚演示

1 脏读演示

脏读: 一个事务读取到了另一个事务中尚未提交的数据

1. 打开窗口登录 MySQL,设置全局的隔离级别为最低   

  1) 登录MySQL

       

       2) 使用db2 数据库

use db2;

  3)   设置隔离级别为最低 读未提交

set global transaction isolation level read uncommitted;

2. 关闭窗口,开一个新的窗口A ,再次查询隔离级别   

  1) 开启新的 窗口A

    

   2) 查询隔离级别

select @@tx_isolation;

3. 再开启一个新的窗口 B 

1) 登录数据库

2) 选择数据库

use db2;

3) 开启事务

start transaction;

4) 查询

select * from account;

4. A窗口执行  

  1) 选择数据库

use db2;

  2) 开启事务

start transaction;

  3)执行修改操作

-- tom账户 -500元 
UPDATE account SET money = money - 500 WHERE NAME = 'tom';
-- jack账户 + 500元 
UPDATE account SET money = money + 500 WHERE NAME = 'jack';

5. B窗口查询数据

  1) 查询账户信息

select * from account;

 6. A窗口转账异常,进行回滚

rollback;

7. B窗口再次查询账户

select * from account;

原文地址:https://www.cnblogs.com/JasperZhao/p/15011832.html