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;

 

posted @ 2021-07-14 17:02  Jasper2003  阅读(86)  评论(0编辑  收藏  举报