【问题标题】:mysql inside a transaction does the binlog guarantee the update oder of table一个事务里面的mysql做binlog保证表的更新顺序吗
【发布时间】:2015-07-02 04:18:10
【问题描述】:
start transaction;
update a set b=1 where a=1;
update b set c=1 where a=1;
commit;

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

如何复现?

【问题讨论】:

    标签: mysql transactions binlog


    【解决方案1】:

    如果您使用的是 InnoDB 等事务引擎,则可以保证要么应用两个更新,要么都不应用。

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

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

    【讨论】:

    • 二进制日志中的顺序也有保证?
    猜你喜欢
    • 2022-01-23
    • 2020-03-03
    • 2016-01-05
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 2016-04-20
    相关资源
    最近更新 更多