Heim > Fragen und Antworten > Hauptteil
因为我要做一个并发的处理(这里的并发是小并发就是几个人的并发),后台管理员操作一条还款数据,防止几个管理在不知情的情况下,同时对一条去操作还款,产生错误。
我的做法是,在表里加一个字段 lock_time 查询lock_time等于0的这条数据,查询出来后在更改lock_time为当前的时间(update时 where条件我加上了lock_time=0)。
问题:请问我这么做还会有可能出现并发的情况吗。
就是说,在理想环境下,两个人同时把一条数据查询出来(不差一分一秒‘同时’查询),
同理,有没有可能两个人同时改变一条数据的某个字段(不差一分一秒‘同时’更改),
黄舟2017-05-16 13:06:36
你可以看一下乐观锁的概念。增加一个版本号字段,读数据可以不用管,更新数据的时候检查版本号,并更新版本号。版本号对比你的lock_time的区别就是lock_time精度不够的情况下可能出现重复,版本号始终+1,不存在重复版本的问题
我想大声告诉你2017-05-16 13:06:36
你的思路接近乐观锁了,吧lock_time换成个时间戳做验证,就是查出来的时间戳和你修改时的做对比然后提交。小并发用innodb的行锁也是可以的,基本没有性能上吃力的感觉。