gpt4 book ai didi

mysql插入竞争条件

转载 作者:IT老高 更新时间:2023-10-29 00:20:39 25 4
gpt4 key购买 nike

如何停止 MySQL 中的竞争条件?手头的问题是由一个简单的算法引起的:

  1. 从表格中选择一行
  2. 如果不存在,则插入

然后要么你得到一个重复的行,要么如果你通过唯一/主键阻止它,一个错误。

现在通常我认为交易在这里有帮助,但因为该行不存在,交易实际上没有帮助(或者我遗漏了什么?)。

LOCK TABLE 听起来有点矫枉过正,尤其是当表每秒更新多次时。

我能想到的唯一其他解决方案是针对每个不同的 ID 使用 GET_LOCK(),但是没有更好的方法吗?这里也没有可扩展性问题吗?而且,对每个表都这样做听起来有点不自然,因为对我来说这听起来像是高并发数据库中的一个非常普遍的问题。

最佳答案

你想要的是LOCK TABLES

或者如果这看起来有点过分,INSERT IGNORE 怎么样?检查是否实际插入了该行。

If you use the IGNORE keyword, errors that occur while executing the INSERT statement are treated as warnings instead.

关于mysql插入竞争条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/264807/

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