Многие СУБД используют специальный протокол 2PC под названием «XA» для распределенной транзакции. Зачем кому-то использовать XA? Для меня XA не может гарантировать что-либо в случае неудачи:
В XA Менеджер транзакций (TM) скажет всем СУБД подготовиться в фазе first , и, если все будут готовы, TM скажет всем им о фиксации в секунду фаза, в противном случае, если какой-либо из них потерпит неудачу, TM скажет другим откатиться.
Если все СУБД подготовлены на первом этапе, , что если кто-то не выполнит коммит на втором этапе ? В этом случае вся транзакция потерпит неудачу, и всем остальным придется откатиться (3-я фаза?), сделав первую фазу бессмысленной . То есть первый этап не может дать никаких гарантий, даже если все СУБД, как говорят, подготовлены (хотя это увеличивает вероятность успеха).