【问题标题】:MySQL Atomic UPDATE in InnoDB vs MyISAMInnoDB 与 MyISAM 中的 MySQL 原子更新
【发布时间】:2012-07-15 04:08:16
【问题描述】:

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

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

我问这个是因为我打算使用这个语句来做伪行级锁定,它与事务和非事务数据库表兼容。

这是recommended for MyISAM 的方法,但我不确定这是否适用于 InnoDB,因为文档建议改用事务。

【问题讨论】:

  • 链接已损坏。因此,这个孤立的陈述的使用是不清楚的。

标签: mysql innodb atomic myisam compare-and-swap


【解决方案1】:

是的。 在 InnoDB 中,行将被锁定(使您在 id 上有一个唯一索引,更新锁定它必须扫描的所有行)、更新并释放锁。如果您不在显式事务中/启用自动提交,则每个语句都在其自己的事务中运行,但它仍然是一个事务并执行锁定

【讨论】:

    猜你喜欢
    • 2011-05-14
    • 2013-09-25
    • 1970-01-01
    • 2011-12-05
    • 2012-10-20
    • 2011-09-17
    • 2015-05-23
    • 2011-09-08
    • 2014-02-03
    相关资源
    最近更新 更多