gpt4 book ai didi

php - 如何防止在处理行时选择该行?

转载 作者:行者123 更新时间:2023-11-29 03:17:34 25 4
gpt4 key购买 nike

我有一个包含 is_locked 列的 MySQL (InnoDB) 表它显示记录的当前状态(系统现在是否正在处理它)。

另一方面,我有很多节点执行 SELECT * FROM table_name WHERE is_locked = 0然后处理从该表中获取的行。

在我的代码中我这样做:

  1. 系统从数据库中获取行 ( SELECT * FROM table_name WHERE is_locked = 0 )
  2. 系统通过命令锁定行UPDATE table_name SET is_locked = 1 WHERE id = <id>

问题:节点工作得非常快,所有节点都可能获得相同的行,然后首先更新该行并设置 is_locked到 1

我发现了表的锁定,但我认为这不是正确的方法。谁能告诉我,如何处理这种情况?

最佳答案

我推荐两件事:

  • 将您的选择限制为一个,因为您正在处理并发问题,最好在每次迭代时采用较小的“咬合”

  • 使用事务,这允许您启动事务、获取记录、锁定它然后提交事务。这将强制 mysql 强制执行并发锁。

关于php - 如何防止在处理行时选择该行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52566043/

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