php - mysql的数据查询与更改有可能同时发生吗?
大家讲道理
大家讲道理 2017-05-16 13:04:36
0
5
453

因为我要做一个并发的处理(这里的并发是小并发就是几个人的并发),后台管理员操作一条还款数据,防止几个管理在不知情的情况下,同时对一条去操作还款,产生错误。

我的做法是,在表里加一个字段 lock_time 查询lock_time等于0的这条数据,查询出来后在更改lock_time为当前的时间(update时 where条件我加上了lock_time=0)。

问题:请问我这么做还会有可能出现并发的情况吗。

就是说,在理想环境下,两个人同时把一条数据查询出来(不差一分一秒‘同时’查询),

同理,有没有可能两个人同时改变一条数据的某个字段(不差一分一秒‘同时’更改),

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

Antworte allen(5)
为情所困

你的问题,回答是完全有可能的。你应该使用锁和事务来避免这些问题,而不是再使用一个新的字段

滿天的星座

百度 innodb 锁 就可以了。

黄舟

你可以看一下乐观锁的概念。增加一个版本号字段,读数据可以不用管,更新数据的时候检查版本号,并更新版本号。版本号对比你的lock_time的区别就是lock_time精度不够的情况下可能出现重复,版本号始终+1,不存在重复版本的问题

小葫芦

锁和事物应该能满足你的要求,具体去看一下Mysql的这两个概念吧。

我想大声告诉你

你的思路接近乐观锁了,吧lock_time换成个时间戳做验证,就是查出来的时间戳和你修改时的做对比然后提交。小并发用innodb的行锁也是可以的,基本没有性能上吃力的感觉。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage