mysql 撤回上一步操作_MySQL 事务的隔离性与脏读详解

1、MySQL 8.0 事务定义和基本操作

2、MySQL 8.0 事务的四大特性:A、C、I、D

事务的隔离级别包括:(isolation level

1.读未提交的

read 

2.读已提交的

read 

3.可以重复读

repeatable 

4.串行化

serializable

隔离级别操作:

1.查看数据库的隔离级别:

mysql 8.0 系统级别:

select 

mysql 默认隔离级别:REPEATABLE-READ

31c5bd756e30c97827428de278def015.png

mysql 8.0 会话级别:

select 

mysql 5.x 系统级别:

select 

mysql 5.x 会话级别:

select 

2.修改事务隔离级别:(读未提交的 read uncommitted

set 

c6f956d68ecabce0d45aa430ea1c7f28.png

事务隔离级别:1.读未提交 read uncommitted,可能遇到的问题。

案例:

在数据库bank,数据表user中,插入两条数据:

insert 

查看数据表user的数据:

select * from user;

a3932b38f318ef6109d335fdb02c14f1.png

小明在淘宝店买东西,转账:800元,

小明在成都,

淘宝店在广州。

小明在成都的终端,进行转账:

start transaction;
update user set money = money - 800 where name='小明';
update user set money = money + 800 where name='淘宝店';

查看数据:

select * from user;

268e7c9ffbb1d394c88fed103a1ac463.png

小明告知淘宝店,自己在成都已转账,让淘宝店在广州查账。

淘宝店在广州的终端,查账后,发货。

7a2e6224143f63646b0644c88d0f8af3.png

淘宝店,在晚上消费1800元,发现钱不够了!

原来小明再淘宝店查完账后,在成都的终端,进行了撤回。

rollback

771a9f008acd196126edf109458dc0c8.png

发现消费不够支付1800元的时候,淘宝店在广州的终端上查帐,发现钱少了小明的转账。

913a1ea6a59ee4b9b6c8a56dbbad2936.png

小明通过回滚,骗吃骗喝的现象出现,原因就是脏读。

如果两个不同地方都在进行操作,事务a开启后,a的数据可以被其他事务 b 读取到,这样就会出现脏读。

脏读

一个事务读到了另外一个事务没有提交的数据,就叫做脏读。

实际开发中,不允许脏读出现。

事务隔离级别:1.读未提交 read uncommitted,可能遇到脏读问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值