gpt4 book ai didi

mysql - 使用由两个连接读取和递增的计数器时如何避免竞争条件?

转载 作者:行者123 更新时间:2023-11-29 00:51:23 25 4
gpt4 key购买 nike

例如,我有一个“Connection1”想要增加“currentcount”计数器,然后选择值。 “Connection2”想要做同样的事情,并且在同一时间运行。这些是正在运行的查询(但不是作为事务)。

Query 1: UPDATE table SET currentcount=currentcount+1;
Query 2: SELECT currentcount FROM table;

如果 Connection1 和 Connection2 同时运行 Query1,然后在同一时间运行 Query2,则两个连接的 query2 结果将相同(即竞争条件)。

我听说事务在这种情况下可能有效。我将如何在 mysql 中解决这个问题?

最佳答案

你需要:

LOCK `table`
...
UNLOCK `table`

请注意,这会显着影响并发性能,因为您必须防止第二个连接与第一个连接同时执行任何(反之亦然)。但是,只有当您每秒执行此操作数千次时,这才会成为问题。

另请参阅 my answer一个类似的问题,其中有一个存储过程可以被简单地修改以使您的增量/选择周期成为服务器的单次往返。

关于mysql - 使用由两个连接读取和递增的计数器时如何避免竞争条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8444808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com