MySQL使用乐观锁要不要把事务隔离级别改为读提交?

我现在有两个想法

1.要改为读提交: MySQL默认的隔离级别是可重复读, 因为乐观锁要在事务执行时读取记录是否改变, 如果不能读取到已提交事务修改的记录, 乐观锁就没法实现了

2.不用改为读提交: update ... where stock=...语句会加X锁, 它是当前读, 也就是能读到当前最新的记录, 所以不用改也行

想法1应该是对的, 想法2我不确定是不是当前读, 能读取到最新的记录吗?
and 回答一下标题的问题吧

阅读 2.5k
1 个回答

自己动手解决了, 在MySQL默认的隔离级别-可重复读 下执行的
image.png

结论:
update ... where stock=...语句是当前读, 会加X锁,
在这条语句执行时, 会读取到已提交的记录(但在10处的select由于是RR下, 只能读到版本链的旧数据)
所以不用把事务隔离级别改为读提交

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏