gpt4 book ai didi

php - mysql - 更新时锁定行

转载 作者:行者123 更新时间:2023-11-28 23:52:41 24 4
gpt4 key购买 nike

我有一个表,它会收到很多调用(大约 30 次/秒),我们称它为 service

service 构建如下

`id`|`name`|`lastUpdate`|`inUse`|`usedBy`

虽然我更改了其中一行,但我不希望它在更新完成之前显示在任何其他 select\update 语句中。例如-

session 1:

UPDATE `service` SET `inUse`=1, `usedBy`='xxx' 
WHERE `inUse`=0 ORDER BY `lastUpdate` ASC LIMIT 1

类(class) 2:

UPDATE `service` SET `inUse`=1, `usedBy`='xxx' 
WHERE `inUse`=0 ORDER BY `lastUpdate` ASC LIMIT 1

尽管两个查询在同一时刻运行,但我希望它们更新不同的行。

我知道有一些关于这个问题的文章,但出于某种原因,每个人都有不同的答案,可能这些年来它发生了变化..我正在使用 doctrine,但我不介意使用常规的 mysql 解决方案

最佳答案

despite both queries run in same moment I want them to update different rows.

不,对吧? AFAIK,像 UPDATE 这样的 DML 语句对表/行进行隐式锁定,因此一旦 UPDATE 发生另一个 UPDATE/INSERT 不能发生,因为它已经获得了表上的独占锁。

参见 Locks Set by Different SQL Statements in InnoDB

关于php - mysql - 更新时锁定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32386912/

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