mysql внутри транзакции гарантирует, что binlog гарантирует обновление таблицы

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

В двоичном журнале будут записываться обновления a, b по порядку, но когда обновление b будет записано в журнал раньше, чем a?

как рецидивирующий?

1 ответ

Если вы используете транзакционный механизм, такой как InnoDB, то гарантируется, что оба обновления будут применены, или ни то, ни другое.

Если вы используете механизм, такой как MyISAM, то транзакция может быть оставлена ​​в состоянии частичного завершения, однако даже с двоичным журналом они будут выполнены в том же порядке, в котором они были сделаны при первоначальном соединении.

Не существует ситуации, когда B обновлялся бы до A, если выполнялся из того же соединения (/ транзакции). Если вы выполняли эти запросы параллельно из двух разных соединений, то они могут выполняться в любом порядке.

Другие вопросы по тегам