mysql 事物

1.打开2个cmd  连接同一个数据  

2.分别查询  数据库当前事物隔离级别 select @@tx_isolation;

3.在任意一个终端(A)设置隔离级别为(read uncommitted)  set session transaction isolation level read uncommitted;   

2个终端的隔离级别已经不一样了 A终端为read uncommitted  B终端为repeatable read(默认隔离级别)

4.两个终端都 设置不自动提交 show variables like '%autocommit%' ;        set autocommit=0;

5.终端分别开启事物 并验证隔离级别的含义  start transaction;

A终端修改name 不提交事物   B终端没有查看到数据变化

A终端提交事物后  B终端 查询的依然是  改之前的数据 因为B终端的隔离级别是可重复度   所有在同个事物中 读取到的数据始终一致  没法感知到A终端的修改

只有当B终端结束这次事物  在下新的事物中才能感知到A终端对数据的更改

AB终端重新开启事物   start transaction;

B终端修改name 不提交事物   A终端为未提交读   A终端能查看到B终端对数据的改变

B终端继续修改name 不提交事物   A终端在同一个事物中 能查看到B终端对数据的再次变更  A终端不可重复读 B终端事物回滚后  A终端查看到数据恢复到更改之前状态   A看到B并未提交事物的数据的现象叫做脏读

设置A终端事物隔离级别为(read committed )  set session transaction isolation level read committed;

AB终端重新开启是事物

B终端修改name 不提交事物   A终端在同一个事物中不能查看到B终端对数据的变更

B终端提交事物后   A终端在同一个事物中能查看到B终端对数据的变更  这种现象交不可重复读

设置A终端事物隔离级别为(serializable)  set session transaction isolation level serializable;

AB终端重新开启是事物

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值