我检查结果,如果没有更新任何行,则将本示例中的 5 更改为 6 并重新发出更新查询。 (实际应用比较复杂,需要这样,而不是简单地设置为count + 1而不带where)
此示例只是尝试通过多个进程更新计数器来维护一个简单的计数器。我怀疑这在我的 MySQL MyISAM 表中不起作用,计数丢失了。我是否应该期望它适用于 MyISAM,如果不能,它是否应该适用于 INNODB?
更新表 SET thecount = thecount +1 WHERE thecount = 5;
最佳答案
MyISAM 有一个非常原始的并发系统,需要在写入期间锁定表,因此不存在一个查询干扰另一个查询的风险。缺点是这些写入必须排队等待才能完成。
InnoDB 具有更好的并发系统,并且像这样的单个语句通常是原子的,如 ACID 所示。 。它会起作用,并且可能表现得更好。
除非你有非常非常令人信服的理由,否则不要使用 MyISAM。这是一个非常古老的引擎,MySQL 团队没有更新它,并且仅出于遗留支持原因而提供。
关于mysql - MySql 中的并行处理更新查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47065414/