[英]MySQL Atomic UPDATE in InnoDB vs MyISAM
无论引擎如何(例如InnoDB或MyISAM),这种“比较和交换”语句是否始终是原子的? :
UPDATE tbl_name SET locked=1 WHERE id=ID AND locked <> 1;
我问这个是因为我打算使用这个语句进行与事务和非事务数据库表兼容的伪行级锁定。
这是MyISAM推荐的方法,但我不确定这是否适用于InnoDB,因为文档建议使用事务。
是。 在InnoDB中,行将被锁定(使您在id上有唯一索引,更新锁定它必须扫描的所有行),更新并释放锁。 如果您没有显式事务/自动提交已启用,则每个语句都在其自己的事务中运行,但它仍然是事务并且执行锁定
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.