gpt4 book ai didi

mysql - Mysql INSERT 操作如何针对可能的重复条目进行优化?

转载 作者:行者123 更新时间:2023-11-29 20:07:23 24 4
gpt4 key购买 nike

在我的 NodeJs 应用程序中,我使用线程(由我自己定义)来打开计算机中的端口。有一个限制,即每个端口只能绑定(bind)一个线程。

我正在 Mysql 中维护一个表(PORTS),其中保存有关开放端口和绑定(bind)线程的数据。目前我正在使用以下方法来避免两个线程绑定(bind)到同一端口。

=> 将一个条目插入到 PORTS 表中,并将端口号作为主键。这将引发以下错误

error inserting semaphore port:10014 error Error: ER_DUP_ENTRY: Duplicate entry 'port:10014' for key 'NAME'

我捕获此错误,然后尝试另一个端口,直到不再抛出错误。

这是一个好的做法吗?或者我应该首先使用 SELECT 查询检查该值是否存在,如果不存在则插入条目?注意 - AFAIK 在第二种方法中,SELECT 和 INSERT 可以通过使用 SQL 事务作为原子操作运行。

最佳答案

假设您有多个“客户端”尝试同时获取“端口”,那么您的第二种方法很糟糕。这是因为不同的客户端可能会潜入 SELECTINSERT 之间并抢占端口。

您的第一种方法更好,因为它是“原子”的。而且它是一个单一的 Action ,因此速度更快(并不是说速度有什么大不了的)。

关于mysql - Mysql INSERT 操作如何针对可能的重复条目进行优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40304789/

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