mysql 事务隔离

mysql 事务隔离级别

  • 读未提交:事务A修改了t 表字段 k =2,未提交事务,事务B 查询 表t ,查询到k值为2,在该事务隔离状态下,事务B获取到的k值为修改后的值
  • 读提交:事务A 修改t表字段k=2,原值为1 未提交事务,事务B查询表t,查询到k 值为1,事务A 提交事务,此时事务B查询k值为2
  • 可重复读:事务A 开启事务时刻 t a1 ,修改t表字段 k=2 时刻t a2 ,提交事务 t a3 ,事务B 在ta1 时刻开始事务,查询t表,此时字段值为1,ta3时刻查询 字段k 值为1, 事务B 提交事务 再次查询表t k值为2
  • 串行化:事务A 在执行事务的时候,会加锁,直到事务提交,当出现读写冲突时候,事务B将在A提交后执行

分析

在这里插入图片描述
分析在“可重复读”事务隔离机制下,此时A 事务查询的k的值和事务B查询的值
1.首先A 开始事务,在可重复读事务隔离机制下,start transaction 将会创建一个视图(注意只有 start transaction withconstent snapshot 才会在事务一开始创建视图)
2.紧接着事务B也开启事务,将会创建一个视图
3.事务C 此时更新k值,默认会开启一个事务,更新完成后会提交
4.此时事务B 开始更新k的,注意 更新语句遵从一个原则-当前读(更新语句先读后写,而这个读只能读当前值,并不是读取事务开始创建的视图里面的值)更新后此时值为3
5. 事务B开始查询k值,在一个事务内,能看到自身更新后的值,所以查询后的值k为3
6. 事务A查询k值,由于是在可重复读事务隔离机制下,查询得到的值为1,事务提交
7. 事务B提交
所以 最后结果为B查询得到的k值为3 A查询到的值为1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值