【发布时间】:2016-10-28 12:08:38
【问题描述】:
在我的 NodeJs 应用程序中,我使用线程(由我自己定义)来打开计算机中的端口。有一个限制,每个端口只能绑定一个线程。
我在 Mysql 中维护一个表(PORTS),其中包含有关打开端口和绑定线程的数据。目前我正在使用以下方法来避免两个线程绑定到同一个端口。
=> 向 PORTS 表中插入一个条目,并将端口号作为 PRIMARY KEY。这将引发以下错误
error inserting semaphore port:10014 error Error: ER_DUP_ENTRY: Duplicate entry 'port:10014' for key 'NAME'
我捕获了这个错误,然后尝试另一个端口,直到没有抛出错误。
这是一个好习惯吗?或者我应该首先使用 SELECT 查询检查该值是否存在,如果不存在则插入条目? 注意-AFAIK 在第二种方法中,SELECT 和 INSERT 可以通过使用 SQL 事务作为原子操作运行。
【问题讨论】:
-
目前的方法对我来说似乎很好。
标签: mysql node.js multithreading performance query-optimization