乐观锁并发问题

发布于 2022-09-11 20:46:29 字数 362 浏览 28 评论 0

乐观锁

乐观锁, 就是在每个表后面加一个version的字段, 由你自己去维护,修改一次+1,如果发现取出来的和version不相等 就说明过期
那么说明是脏数据,但是这样耗费一定的查询性能,因为必须要在update的时候 去检查version

问题

比如线程1给id=3这行数据进行操作,使用的是乐观锁,那么mysql内部会有个version
如果在线程1操作的同时,线程2也来了,也对id=3进行操作
如果线程2的sql先操作完了,会发生什么问题?

个人推测

线程1是不是对线程2的操作进行写覆盖了?但是不对啊,有乐观锁,乐观锁要比对version的

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

最丧也最甜 2022-09-18 20:46:29

虽然没有太看明白你具体想问啥 ...

不过觉得还是可以先看看这个

(可以)保证操作的原子性是数据库设计的基本原则之一,只要适当的利用 transaction 跟其他一些用于同步的机制,就不会出现一些操作插入另一些操作中间引起错误结果的情况。

这里并不需要在两个线程里加 mutex 互斥,而是由 mysql 来完成。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文