mysql - 多进程轮询mysql并更新数据

标签 mysql node.js

我在让 mysql 和我的 Nodejs 应用程序和谐相处时遇到问题。基本上,我有两个 Nodejs“客户端”,它们轮询 mysql 表以获取 50 行数据。但是,我不希望他们轮询相同的 50 行。一旦一个客户端拥有 50 行数据,它就会执行一些基本操作并启动一些 bash 脚本。这可能需要几秒钟的时间。表中的所有 50 行数据均已更新,以指示这些行在该客户端上“正在使用”。

问题是,在某些情况下,两个客户端同时请求并收到相同的 50 行。我如何/可以安全地使用 innodb 锁来锁定这些行以防止任何其他客户端读取/使用?即使可能需要几秒钟才能确保行数据已成功启动脚本?

我有点不知所措,需要一些指导。

最佳答案

您要找的是

SELECT columnName FROM tableName FOR UPDATE;

这将选择一行并锁定它,以便另一个同时连接的连接无法选择它。

参见 MySql 文档 Here

关于mysql - 多进程轮询mysql并更新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44061525/

相关文章:

node.js - 如何从命令行运行 TypeScript 文件?

node.js - Azure 网站 + node.js - 无法获取/

mysql - Nodejs 阻止进一步的 mysql 查询

c# - 无法捕获 MySqlConnection Open()

mysql - 从数据库导出用户

mysql - 使用 subtime() 的查询意外地没有返回任何行

node.js - AWS 在端口 3000 上对 Node.js 应用程序进行负载平衡

javascript - Node JS 异步数据库调用

mysql - 如何使用 INSERT 防止竞争条件?

MySQL 列名是一个奇怪的字符 - 我该如何更改它?