MySQL系列:事务隔离级别

1 隔离级别

1.0 隔离级别

序号隔离级别设置命令查询隔离级别
1读未提交(read uncommitted)读取未提交(持久化)的数据set session transaction isolation level read uncommitted
2读已提交(read committed)读取已隐式提交(持久化)的数据set session transaction isolation level read committed
3可重复读(repeatable read)一个事务读取另一个事务已隐式提交(持久化)的数据,但第一次读取的数据,即使其他事务修改,获取的仍不变set session transaction isolation level repeatable read;
4串行化(serializable)读-读并发,只要有一个事务写,其他所有事务访问(读,写)该条数据,都需等待set session transaction isolation level serializable

1.2 隔离级别作用

序号隔离级别脏读不可重复读幻读
1读未提交YYY
2读已提交NYY
3可重复读NNY
4串行化NNN

2 解析

开启mysql事务:begin;命令并未实际开启一个事务,只有增删改查会开启一个事务.
在这里插入图片描述

图 事务开启比较

2.1 读未提交

事务A事务B
begin;-
insert into transaction_test (score) values (66);begin;
-select * from transaction_test;
rollback;select * from transaction_test;
commit;commit;

在这里插入图片描述

图 读未提交

即使事务A未提交,事务B仍可读到事务A修改但未提交的数据,即脏读.

2.2 读已提交

事务A事务B
begin;-
update transaction_test score=88 where id=2;begin;
-select * from transaction_test;
-select * from transaction_test;
commit;-
-select * from transaction_test;

在这里插入图片描述

图 读已提交

在这里插入图片描述

图 读已提交-幻读

读已提交自带幻读属性,只要提交,就会读取.

2.3 可重复读

2.2.1 快照读(snapshot read)

事务A事务B
begin;-
insert into transaction_test (score) values ();begin;
-select * from transaction_test;
commit;select * from transaction_test;
-commit;

在这里插入图片描述

图 可重复读-快照读

快照读:事务开启时,读取的数据库版本号为所有并发事务开启前的持久化版本号,所以,不会产生幻读.

2.2.2 当前读(current read)

事务A事务B
begin;-
insert into transaction_test (score) values (90);begin;
-select * from transaction_test lock in share mode;
-(等待数据提交,此时锁住,读不到数据)
commit;读取实时提交的数据,产生幻读
-commit;

在这里插入图片描述

图 可重复读-当前读

读取数据库事务实时变化.开启两个事务,A和B,当事务B使用当前读时,事务A改变的数据会实时更新到事务B中,若插入数据,则产生幻读.

2.4 串行化

事务A事务B
begin;begin;
select * from transaction_test;select * from transaction_test;
update transaction_test set score=88 where id=2;-
等待-
-等待commit;
更新成功-
commit;-

在这里插入图片描述

图 串行化

串行化:读-读并发,其他情况均是锁(阻塞),每次只能处理一个事务,顺序执行,如上,当事务A和事务B开启后,可同时查数据,当事务A更新数据时,事务B还为结束,事务A等待其他事务(B)结束,当事务B提交后,更新成功.


【参考文献】
[1]https://www.cnblogs.com/huanongying/p/7021555.html
[2]http://www.zsythink.net/archives/1233/
[3]https://baijiahao.baidu.com/s?id=1629344395894429251&wfr=spider&for=pc
[4]https://www.cnblogs.com/wdy1184/archive/2019/04/04/10655180.html
[5]https://www.cnblogs.com/liyus/p/10556563.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天然玩家

坚持才能做到极致

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值