mysql - MySql 中的并行处理更新查询

标签 mysql

我检查结果,如果没有更新任何行,则将本示例中的 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/

相关文章:

php - MySQL/PHP 查询反向关系

php - mySQL - 按最大日期选择并获取相应行的其他字段

php - 未定义索引 : id in C:\xampp\htdocs\test\edit. php 第 13 行

mysql - 错误 : Handshake inactivity timeout in Node. js MYSQL 模块

php - 使用 PHP 从数据库中删除特定文章

php - 使用从 URL 获取变量来执行 MYSQL 查询

java - 在ListView中显示JsonArray

php - 如何防止 PHP 中的 SQL 注入(inject)?

mysql - 多个 SELECT 语句的正确 mySQL 语法?

mysql - 将 SQL Server 查询结果格式化为 3D 直方图