Spec-Zone .ru
спецификации, руководства, описания, API
|
Чтобы выполнить транзакции XA в MySQL, используйте следующие операторы:
XA {START|BEGIN}xid
[JOIN|RESUME]XA ENDxid
[SUSPEND [FOR MIGRATE]]XA PREPARExid
XA COMMITxid
[ONE PHASE]XA ROLLBACKxid
XA RECOVER
Для XA START
, JOIN
и RESUME
пункты не поддерживаются.
Для XA END
SUSPEND [FOR MIGRATE]
пункт не
поддерживается.
Каждый оператор XA начинается XA
ключевое слово, и большинство из них требуют xid
значение. xid
идентификатор транзакции XA. Это указывает, какой транзакции оператор применяется к. xid
значения предоставляются клиентом, или сгенерировались
сервером MySQL. xid
значение имеет от одной до трех частей:
xid
:gtrid
[,bqual
[,formatID
]]
gtrid
глобальный идентификатор транзакции, bqual
спецификатор ответвления, и formatID
число, которое идентифицирует формат, используемый gtrid
и bqual
значения. Как обозначено синтаксисом, bqual
и formatID
являются дополнительными. Значение по умолчанию bqual
значение ''
если не данный. Значение по умолчанию formatID
значение 1 если не дано.
gtrid
и bqual
должны быть
строковые литералы, каждый до 64 байтов (не символы) долго. gtrid
и
bqual
может быть определен несколькими способами. Можно использовать
заключенную в кавычки строку ('ab'
), шестнадцатеричная строка (0x6162
, X'ab'
), или битовое значение (b'
). nnnn
'
formatID
целое без знака.
gtrid
и bqual
значения
интерпретируются в байтах базовыми подпрограммами поддержки XA сервера MySQL. Однако, в то время как
SQL-оператор, содержащий оператор XA, анализируется, работы сервера с некоторым определенным набором символов.
Чтобы быть безопасным, записать gtrid
и bqual
как шестнадцатеричные строки.
xid
значения обычно сгенерированы Менеджером транзакций. Значения,
сгенерированные одним ТМ, должны отличаться от значений, сгенерированных другими ТМ. Данный ТМ должен быть в
состоянии распознать свое собственное xid
значения в списке значений,
возвращенных XA RECOVER
оператор.
XA START
запускает транзакцию XA с
данного xid
xid
значение. У каждой транзакции XA должно быть уникальное
xid
значение, таким образом, значение не должно в настоящий момент
использоваться другой транзакцией XA. Уникальность оценивается, используя gtrid
и bqual
значения.
Весь после операторов XA для транзакции XA должен быть определен, используя то же самое xid
оцените как поданное XA START
оператор. Если Вы используете какой-либо из тех операторов, но определяете xid
значение, которое не соответствует некоторой существующей
транзакции XA, ошибка, происходит.
Одна или более транзакций XA могут быть частью той же самой глобальной транзакции. Все транзакции XA в пределах
данной глобальной транзакции должны использовать то же самое gtrid
значение в xid
значение. Поэтому gtrid
значения должны быть глобально уникальными так, чтобы не
было никакой неоднозначности, о которой глобальной транзакции данная транзакция XA является частью. bqual
часть xid
значение
должно отличаться для каждой транзакции XA в пределах глобальной транзакции. (Требование это bqual
значения отличаться являются ограничением текущей реализации
MySQL XA. Это не часть спецификации XA.)
XA RECOVER
оператор возвращает информацию для тех транзакций XA на сервере MySQL,
которые находятся в PREPARED
состояние. (См. Раздел
13.3.7.2, "государства Транзакции XA".) Вывод включает строку для каждой такой транзакции XA
на сервере, независимо от который клиент, запущенный это.
XA RECOVER
выходные строки похожи на это (для примера xid
значение, состоящее из частей 'abc'
,
'def'
, и 7
):
mysql> XA RECOVER;
+----------+--------------+--------------+--------+| formatID | gtrid_length | bqual_length | data |+----------+--------------+--------------+--------+| 7 | 3 | 3 | abcdef |+----------+--------------+--------------+--------+
У выходных столбцов есть следующие значения:
formatID
formatID
часть транзакции xid
gtrid_length
длина в байтах gtrid
часть xid
bqual_length
длина в байтах bqual
часть xid
data
связь gtrid
и bqual
части
xid