|NO.Z.00038|——————————|BigDataEnd|——|Java&MySQL单表/约束/事务.V16|——|MySQL.v16|脏读演示及解决|

一、脏读演示
### --- 脏读演示

——>        脏读: 一个事务读取到了另一个事务中尚未提交的数据
二、打开窗口登录 MySQL,设置全局的隔离级别为最低
### --- 登录是MySQL

——>        使用db2数据库
use db2;
——>        设置隔离级别为最低 读未提交
set global transaction isolation level read uncommitted;
### --- 关闭窗口,开一个新的窗口A ,再次查询隔离级别

——>        开启新的 窗口A
——>        查询隔离级别
查询隔离级别
### --- 再开启一个新的窗口B

~~~     # 查询数据,本次查询用户的账户余额都为1000
——>        登录数据库
——>        选择数据库
use db2;
——>        开启事务
start transaction;
——>        查询
select * from account;
### --- A窗口执行

——>        选择数据库
use db2;
——>        开启事务
start transaction;
——>        执行修改操作
-- tom账户 -500元
UPDATE account SET money = money - 500 WHERE NAME = 'tom';
-- jack账户 + 500元
UPDATE account SET money = money + 500 WHERE NAME = 'jack';
### --- B窗口查询操作

——>        查询账户信息
select * from account;
### --- A窗口转账异常,进行回滚

~~~     # A窗口的事务执行,出现异常进行回滚
rollback;
### --- B窗口再次进行查询账户

~~~     # 由于A窗口执行出现异常,对事务进行了回滚,B窗口再次进行查询时,发现前又不见了。
select * from account;
三、结局脏读问题
### --- 结局脏读问题

——>        脏读非常危险的,比如张三向李四购买商品,张三开启事务,向李四账号转入 500 块,
——>        然后打电话给李四说钱 已经转了。李四一查询钱到账了,发货给张三。
——>        张三收到货后回滚事务,李四的再查看钱没了。
——>        解决方案
——>        将全局的隔离级别进行提升为: read committed
### --- 在A窗口设置全局的隔离级别为read committed

set global transaction isolation level read committed;
### --- 重新开启A窗口,查看设置是否成功
select @@tx_isolation;

### --- 开启B窗口,A和B窗口选择数据库后,都开启事务
### --- A窗口只是更新两个账户,不提交事务

-- tom账户 -500元
UPDATE account SET money = money - 500 WHERE NAME = 'tom';
-- jack账户 + 500元
UPDATE account SET money = money + 500 WHERE NAME = 'jack';
### --- B窗口进行查询,没有查询到未提交的数据

mysqlselect * from account;
### --- A窗口commit提交数据
commit;

### --- B窗口查看数据
select * from account;

 
 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on 2022-04-05 13:34  yanqi_vip  阅读(10)  评论(0)    收藏  举报

导航