MySQL的原子更新InnoDB中的MyISAM VS(MySQL Atomic UPDATE in

2019-06-26 07:27发布

这是“比较和交换”语句总是原子无论引擎(例如InnoDB的或MyISAM数据)的? :

UPDATE tbl_name SET locked=1 WHERE id=ID AND locked <> 1;

我问这个,因为我打算用这个语句来完成的伪行级锁是与事务性和非事务性数据库表兼容。

这是该法建议对MyISAM ,但我不确定以来文档建议使用事务,而不是这是否也适用于InnoDB。

Answer 1:

是。 在InnoDB中,该行将被锁定(让你有ID为唯一索引,则更新锁它必须扫描所有的行),更新和锁释放。 如果你不是一个明确的交易/自动提交时,每个语句在其自身的事务中运行,但它仍然是一个交易,并进行lockings



文章来源: MySQL Atomic UPDATE in InnoDB vs MyISAM