Spec-Zone .ru
спецификации, руководства, описания, API

E.6. Ограничения на Транзакции XA

Поддержка транзакции XA ограничивается InnoDB механизм хранения.

Для "внешнего XA," сервер MySQL действует как Менеджер ресурсов и клиентское действие программ как Менеджеры транзакций. Для "Внутреннего XA", механизмы хранения в пределах действия сервера MySQL столь же СРЕДНЕКВАДРАТИЧЕСКОГО, и сам сервер действуют как ТМ. Внутренняя поддержка XA ограничивается возможностями отдельных механизмов хранения. Внутренний XA требуется для того, чтобы обработать транзакции XA, которые включают больше чем один механизм хранения. Реализация внутреннего XA требует, чтобы механизм хранения поддерживал двухфазную фиксацию на табличном уровне обработчика, и в настоящий момент это - истина только для InnoDB.

Для XA START, JOIN и RESUME пункты не поддерживаются.

Для XA END, SUSPEND [FOR MIGRATE] пункт не поддерживается.

Требование, что bqual часть xid значение отличаться для каждой транзакции XA в пределах глобальной транзакции является ограничением текущей реализации MySQL XA. Это не часть спецификации XA.

Если транзакция XA достигла PREPARED состояние и сервер MySQL уничтожаются (например, с уничтожением-9 на Unix) или завершают работу неправильно, транзакция может продолжаться после перезапусков сервера. Однако, если клиент будет повторно соединять и будет фиксировать транзакцию, то транзакция будет отсутствовать в двоичном журнале даже при том, что это фиксировалось. Это означает, что данные и двоичный журнал вышли из синхронии. Импликация - то, что XA не может использоваться безопасно вместе с репликацией.

Возможно, что сервер будет откатывать ожидание транзакция XA, даже тот, который достиг PREPARED состояние. Это происходит, если клиентское соединение завершается, и сервер продолжает работать, или если клиенты соединяются, и сервер завершает работу корректно. (В последнем случае сервер отмечает каждое соединение, которое будет завершено, и затем откатывает PREPARED Транзакция XA связалась с этим.) Должно быть возможно фиксировать или откатывать a PREPARED Транзакция XA, но это не может быть сделано без изменений к двоичному механизму журналирования.