首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql中的行锁

mysql中的行锁
EN

Stack Overflow用户
提问于 2011-02-13 06:19:20
回答 1查看 830关注 0票数 2

我必须根据有超过7000万行的表中的每一行执行一些网络IO。由于需要高的TPS,所以我已经创建了一个php脚本,它为表中的单个行执行此任务。我计划每秒钟使用cron作业调用这个php脚本40次。如何做到这一点,使没有两个脚本访问同一行。

EN

回答 1

Stack Overflow用户

发布于 2011-02-13 06:40:23

若要完全基于表进行此操作,需要在表中设置指示已处理行的布尔值、时间戳、删除行等。在此之后,您所需要的就是一个事务。

代码语言:javascript
复制
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资源)。

进一步读:

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4982774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档