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

13.3.7. Транзакции XA

13.3.7.1. Синтаксис SQL Транзакции XA
13.3.7.2. Государства Транзакции XA

Поддержка транзакций XA доступна для InnoDB механизм хранения. Реализация MySQL XA основана на документе CAE X/Open Распределенная обработка транзакций: Спецификация XA. Этот документ публикуется Open Group и доступный в http://www.opengroup.org/public/pubs/catalog/c193.htm. Ограничения текущей реализации XA описываются в Разделе D.6, "Ограничения на Транзакции XA".

На стороне клиента нет никаких особых требований. Интерфейс XA к серверу MySQL состоит из SQL-операторов, которые начинаются XA ключевое слово. Клиентские программы MySQL должны быть в состоянии отправить SQL-операторы и понять семантику интерфейса оператора XA. Они не должны быть соединенными против недавней клиентской библиотеки. Также будут работать более старые клиентские библиотеки.

В настоящий момент, среди MySQL Connectors, MySQL, Connector/J 5.0.0 и выше, поддерживает XA непосредственно, посредством интерфейса class, который обрабатывает интерфейс SQL-оператора Xan для Вас.

XA поддерживает распределенные транзакции, то есть, возможность разрешить многократным отдельным транзакционным ресурсам участвовать в глобальной транзакции. Транзакционные ресурсы часто являются RDBMSs, но могут быть другими видами ресурсов.

Глобальная транзакция включает несколько действий, которые являются транзакционными в себе, но что все должны или завершиться успешно как группа, или все откатываться как группа. В основном это расширяет свойства ACID "уровень" так, чтобы многократные транзакции ACID могли быть выполнены на концерте как компоненты глобальной работы, у которой также есть свойства ACID. (Однако, для распределенной транзакции, следует использовать SERIALIZABLE уровень изоляции, чтобы достигнуть свойств ACID. Достаточно использовать REPEATABLE READ для нераспределенной транзакции, но не для распределенной транзакции.)

Некоторые примеры распределенных транзакций:

Приложения, которые используют глобальные транзакции, включают один или более Менеджеров ресурсов и Менеджер транзакций:

Реализация MySQL MySQL XA позволяет серверу MySQL действовать как Менеджер ресурсов, который обрабатывает транзакции XA в пределах глобальной транзакции. Клиентская программа, которая соединяется с действиями сервера MySQL как Менеджер транзакций.

Чтобы выполнить глобальную транзакцию, необходимо знать, какие компоненты включаются, и приносят каждому компоненту к точке, когда это может фиксироваться или откатываться. В зависимости от чего каждый компонент отчеты о его возможности успешно выполниться, они должны все фиксировать или откатывать как атомарная группа. Таким образом, или все компоненты должны фиксировать, или все компоненты должны откатывать. Чтобы управлять глобальной транзакцией, необходимо принять во внимание, что любой компонент или соединяющаяся сеть могли бы перестать работать.

Процесс для того, чтобы выполнить глобальную транзакцию использует двухфазную фиксацию (2PC). Это имеет место после того, как действия, выполняемые ответвлениями глобальной транзакции, были выполнены.

  1. В первой фазе готовятся все ответвления. Таким образом, им говорит ТМ подготовиться фиксировать. Как правило, это означает каждую КОМНАТУ, которая управляет, ответвление записывает действия для ответвления в устойчивом хранении. Ответвления указывают, ли они в состоянии сделать это, и эти результаты используются для второй фазы.

  2. Во второй фазе ТМ говорит СРЕДНЕКВАДРАТИЧНОЕ ЗНАЧЕНИЕ, фиксировать ли или откатывать. Если всем ответвлениям, обозначенным, когда они были подготовлены, что они будут в состоянии фиксировать, все ответвления, говорят фиксировать. Если любому ответвлению, обозначенному, когда это было подготовлено, что это не будет в состоянии фиксировать, все ответвления, говорят откатывать.

В некоторых случаях глобальная транзакция могла бы использовать однофазную фиксацию (1PC). Например, когда Менеджер транзакций находит, что глобальная транзакция состоит только из одного транзакционного ресурса (то есть, единственное ответвление), что ресурсу можно сказать подготовить и фиксировать одновременно.