事务中的mysql使binlog保证表的更新

时间:2015-07-02 04:18:10

标签: mysql transactions binlog

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

二进制日志会按顺序记录a,b更新,但是什么时候b的更新会刷新到日志之前?

如何反复出现?

1 个答案:

答案 0 :(得分:0)

如果您使用的是InnoDB之类的事务引擎,那么可以保证同时应用这两个更新,或者两者都不应用。

如果您使用的是MyISAM等引擎,那么事务可能会处于部分完成状态,但即使使用二进制日志,它们也会按照初始连接中的顺序完成。< / p>

在使用相同的连接(/ transaction)进行A之前,不存在B更新的情况。如果您从2个不同的连接并行执行这些查询,则它们可以按任意顺序进行。