乐观锁的问题

来源:3-12 锁模块之MyISAM与InooDB关于锁方面的区别_2

weixin_慕莱坞0474613

2019-12-19

老师您好.
在讲乐观锁的时候,您说 “乐观锁并不会使用数据库提供的锁机制” 您的意思是不会去手动的获取数据库提供的锁吧,在执行update语句时数据库就会默认使用排它锁吧,只是这个排它锁会在执行完语句后自动解锁.
如果不自动使用排它锁的话,整个乐观锁都会有问题吧,比如两个session同时修改一条语句判断表中的version都是0,然后同时进行修改,修改后version变为1. 我的理解是正确的吗?老师指点.

写回答

1回答

翔仔

2019-12-20

同学好,视频里表达的意思是乐观锁机制不在mysql中实现,而是放到了程序里面,由程序进行事务的控制,比如spring,然后按照版本号去控制。底层执行update的时候虽然也涉及到数据库的锁,但是乐观锁是上层实现的

0
5
翔仔
回复
慕粉3169703
同学好,因为你后面的请求会打到数据库,不免需要和数据库的锁打交道,所以实际上或多或少还是用到了数据库的行锁,但是实际的结果也是提交了之后才能知道是否成功,所以还是乐观锁模式呢。实际的开发中,我们可以先把操作结果存到redis之类的缓存,然后提示用户成功,之后再由消息队列异步将改动同步到数据库,这个时候就能在应用层面实现乐观锁
2020-09-25
共5条回复

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8441 学习 · 1872 问题

查看课程