a statement or a normal transaction, the server either uses the two-phase commit
А кто будет "второй фазой"? Это же распределены транзакции уже, это другое...
другой движек. вот, что они пишут в доке. When committing a statement or a normal transaction, the server either uses the two-phase commit protocol, or issues a commit in each engine independently. The server uses the two-phase commit protocol only if: All participating engines support two-phase commit (by providing a handlerton::prepare PSEA API call), and Transactions in at least two engines modify data (that is, are not read-only)
Ну странный вопрос...
Почему? мне интересно узнать случается ли на практике вот такое . Тhe greatest disadvantage of the two-phase commit protocol is that it is a blocking protocol. If the coordinator fails permanently, some participants will never resolve their transactions: After a participant has sent an agreement message to the coordinator, it will block until a commit or rollback is received.
Я не понимаю одно — кто с кем должен коммититься, если движок с транзакциями только один?
в доке пишут, что применяют его только к 2м разным. если один, то не будут. All participating engines support two-phase commit (by providing a handlerton::prepare PSEA API call), and Transactions in at least two engines modify data (that is, are not read-only)
Это называется "асинхронный процесс" и теорема FLP нам говорит что нам в целом с ними не по пути. Нам по пути с синхронными, в которых есть таймаут. Но в целом эта проблема является той самой причиной, по которой все эти патрони курам на смех.
Обсуждают сегодня