并行进程在MySql中更新查询

时间:2017-11-01 23:50:48

标签: mysql

我检查结果,如果没有更新行,请在此示例中将5更改为6并重新发出更新查询。 (实际应用程序更复杂,需要这个而不是简单地设置为没有where的数字+ 1)

这个例子只是试图维护一个简单的计数器,其中有多个进程更新计数器。我怀疑这在我的MySQL MyISAM表中不起作用,计数错过了。我是否应该期望这适用于MyISAM,如果没有,它是否适用于INNODB?

更新表格SET thecount = thecount +1 WHERE thecount = 5;

1 个答案:

答案 0 :(得分:0)

MyISAM有一个非常原始的并发系统,需要在写入期间锁定表,因此不存在一个查询干扰另一个查询的风险。缺点是这些写入必须排队等待才能完成。

InnoDB有一个更好的并发系统,像这样的单个语句通常是原子的,按照ACID。它会起作用,而且可能表现更好。

除非你有非常非常令人信服的理由,否则不要使用MyISAM。它是一个非常古老的引擎,MySQL团队没有更新,只是出于传统支持的原因。