mysql的并发问题、隔离级别

超链接:mysql大纲

1. 并发问题

  • 脏读(A事务读取到了B事务未提交数据)
  • 不可重复读(A事务读取,B事务更修改,A再读取时,数据发生修改,,针对“修改”)
  • 幻读(A事务读取,B事务增删,A事务再次读取,数据条目发生变化,,针对"增删")

2.0 隔离级别

  • 读未提交
  • 读已提交
  • 可重复读
  • 串行化

在这里插入图片描述

mysql默认级别“可重复读”(会出现“幻读”)

MVCC + 间隙锁 防止“幻读”

一致非锁定读能解决幻读;但一致锁定读,会造成幻读现象

  • 普通的select使用的“快照读”,此时如果有其他事物添加记录,由于添加的记录的事务比select事务大,所以读取不到
  • select for update 使用了"当前读",此时另一个事务添加记录,提交后;此事务要读取当前最新数据,会将新添加的记录标记为当前事务,导致能读取到数据
  • update操作(新插入一行,并以当前事务的版本号作为新行的创建版本号,同时将原记录行的删除版本号设置为当前事务版本号)

能否出现幻读,取决于A事务是否会将B事务新增的记录,再次标记为当前事务。

参考

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值