小编Roc*_*uts的帖子

如何以线程安全的方式查询和增加值(计数器)?(避免竞争条件)

在每行有一个计数器(只是一个整数值)的表,我需要的电流值,并增加它在同一时间

实际上,我想这样做:

SELECT counter FROM table WHERE id=123
UPDATE table SET counter=counter+1 WHERE id=123
Run Code Online (Sandbox Code Playgroud)

但是这样做作为两个查询显然不是线程安全的:多个进程做同样的事情(在同一行)可能会得到相同的计数器值。我需要它们都是独一无二的,所以每个过程都会获得实际的当前值并将其增加一。

我可以想到一种结构,在其中我对每行实施手动锁定,但我想知道是否有更简单的方法来做到这一点?

mysql locking

14
推荐指数
1
解决办法
3万
查看次数

标签 统计

locking ×1

mysql ×1