gpt4 book ai didi

php - mysql中的行锁

转载 作者:行者123 更新时间:2023-11-29 02:06:31 26 4
gpt4 key购买 nike

我必须根据超过 7000 万行的表中的每一行执行一些网络 IO。由于需要高 TPS,我创建了一个 php 脚本来为表中的单行执行此任务。我计划使用 cron 作业每秒调用此 php 脚本约 40 次。我该怎么做才能避免两个脚本访问同一行。

最佳答案

要完全基于表来执行此操作,您需要在表中设置某些内容 - bool 值、时间戳、删除行等 - 表示您已处理该行。之后,您只需要一笔交易。

START TRANSACTION;
SELECT * FROM table WHERE processing = 0 ORDER BY id ASC LIMIT 1 FOR UPDATE;
UPDATE table SET processing = 1 WHERE id = $id_of_what_we_got;
COMMIT;
-- process row here
-- optionally, tell the db we're done
UPDATE table SET processing = 2 WHERE id = $id_of_what_we_got;

只需确保对整个事务使用相同的 MySQL 连接(PHP 资源)即可。

进一步阅读:

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

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