0
start transaction;
update a set b=1 where a=1;
update b set c=1 where a=1;
commit;

二进制日志会按顺序记录a、b的更新,但是b的更新什么时候会比a先刷新到log呢?

如何复发?

4

1 回答 1

0

如果您正在使用诸如 InnoDB 之类的事务引擎,则可以保证要么应用两个更新,要么都不应用。

如果您使用诸如 MyISAM 之类的引擎,则事务可能会处于部分完成状态,但是,即使使用二进制日志,它们也会按照与初始连接中相同的顺序完成。

当从同一个连接(/事务)进行时,B 不会在 A 之前更新。如果您从 2 个不同的连接并行执行这些查询,那么它们可能以任一顺序发生。

于 2015-07-02T04:23:06.353 回答