乐观锁
乐观锁, 就是在每个表后面加一个version的字段, 由你自己去维护,修改一次+1,如果发现取出来的和version不相等 就说明过期
那么说明是脏数据,但是这样耗费一定的查询性能,因为必须要在update的时候 去检查version
问题
比如线程1给id=3
这行数据进行操作,使用的是乐观锁,那么mysql内部会有个version
如果在线程1操作的同时,线程2也来了,也对id=3
进行操作
如果线程2的sql先操作完了,会发生什么问题?
个人推测
线程1是不是对线程2的操作进行写覆盖了?但是不对啊,有乐观锁,乐观锁要比对version的
虽然没有太看明白你具体想问啥 ...
不过觉得还是可以先看看这个。
(可以)保证操作的原子性是数据库设计的基本原则之一,只要适当的利用 transaction 跟其他一些用于同步的机制,就不会出现一些操作插入另一些操作中间引起错误结果的情况。
这里并不需要在两个线程里加 mutex 互斥,而是由 mysql 来完成。