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

1 脏读演示

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

 

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

  1) 登录MySQL

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

 

 

       2) 使用db2 数据库

use db2;

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

set global transaction isolation level read uncommitted;

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

 

 

 

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

  1) 开启新的 窗口A

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

 

 

   2) 查询隔离级别

select @@tx_isolation;

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

 

 

 

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

1) 登录数据库

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

 

 

 

2) 选择数据库

use db2;

3) 开启事务

start transaction;

4) 查询

select * from account;

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

 

 

 

4. A窗口执行  

  1) 选择数据库

use db2;

  2) 开启事务

start transaction;

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

 

  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;

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

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

rollback;

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

 

 

7. B窗口再次查询账户

select * from account;

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

 

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

上一篇:vulfocus靶场入门


下一篇:MySQL查询BLOB类型的字段