13.3.7.1 XA 트랜잭션 SQL 구문
MySQL에서 XA 트랜잭션을 실행하려면 다음 문을 사용합니다.
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
값은 1 개에서 3 개 부분이 포함되어 있습니다.
xid
: gtrid
[, bqual
[, formatID
]
gtrid
는 글로벌 트랜잭션 식별자이며, bqual
브런치 한정자이며, formatID
은 gtrid
및 bqual
값으로 사용되는 형식을 식별하는 숫자입니다. 구문에 표시된대로 bqual
과 formatID
는 옵션입니다. bqual
가 지정되지 않은 경우 기본값은 ''
입니다. formatID
가 지정되지 않은 경우 기본값은 1입니다.
gtrid
와 bqual
는 각각 최대 64 바이트 (64 자 아닙니다) 문자열 리터럴이어야합니다. gtrid
와 bqual
은 여러 가지 방법으로 지정할 수 있습니다. 따옴표로 둘러싸인 문자열 ( 'ab'
) 16 진수 문자열 ( 0x6162
, X'ab'
) 또는 비트 값 ( b'
)를 사용할 수 있습니다. nnnn
'
formatID
는 부호없는 정수입니다.
gtrid
및 bqual
값은 MySQL 서버의 기반이되는 XA 지원 루틴은 바이트 단위로 해석됩니다. 그러나 XA 문을 포함하는 SQL 문을 구문 분석하는 동안 서버는 무엇에서 특정 문자 세트로 작동합니다. 안전을 위해 gtrid
와 bqual
는 16 진수 문자열로 기술 해주십시오.
xid
값은 일반적으로 트랜잭션 관리자에 의해 생성됩니다. 있는 TM에 의해 생성 된 값은 다른 TM에 의해 생성 된 값과는 달라야합니다. 특정 TM은 XA RECOVER
문에 의해 반환 된 값의 목록에서 자신의 xid
값을 인식 할 수 있어야합니다.
XA START
는 지정된 xid
xid
값을 사용하여 XA 트랜잭션을 시작합니다. 각 XA 트랜잭션이 고유의 xid
값을 가지고 있어야하므로 그 값이 현재 다른 XA 트랜잭션에 의해 사용되지는 안됩니다. 독창성은 gtrid
및 bqual
값을 사용하여 평가됩니다. XA 트랜잭션에 대한 이후의 모든 XA 문을 XA START
문에서 지정된 것과 같은 xid
값을 사용하여 지정해야합니다. 이러한 문 중 하나를 사용하고 있지만 기존의 XA 트랜잭션을 지원하지 않는 xid
값을 지정하면 오류가 발생합니다.
하나 이상의 XA 트랜잭션을 동일한 전역 트랜잭션의 일부가 될 수 있습니다. 특정 글로벌 트랜잭션의 모든 XA 트랜잭션이 xid
값에서 같은 gtrid
값을 사용해야합니다. 따라서 특정 XA 트랜잭션이 전역 트랜잭션의 일부인지에 대한 모호함이 없도록 gtrid
값은 전역 적으로 고유해야합니다. xid
값 bqual
부분은 글로벌 트랜잭션의 XA 트랜잭션마다 다르다해야합니다. ( bqual
값이 다르다는 요구 사항은 현재 MySQL XA 구현의 제한 사항입니다. 이것은 XA 사양의 일부가 아닙니다.)
XA RECOVER
문은 PREPARED
상태에있는 MySQL 서버에서 XA 트랜잭션에 대한 정보를 반환합니다. ( 섹션 13.3.7.2 "XA 트랜잭션의 상태" 를 참조하십시오.)이 출력에는 어떤 클라이언트에 의해 시작되었는지에 관계없이 서버에서 이러한 XA 트랜잭션 당 행이 포함되어 있습니다 .
XA RECOVER
의 출력 행은 다음과 같습니다 ( 'abc'
, 'def'
, 7
의 각 부분으로부터 완성되는 xid
값의 예를 들어).
mysql> XA RECOVER;
+----------+--------------+--------------+--------+
| formatID | gtrid_length | bqual_length | data |
+----------+--------------+--------------+--------+
| 7 | 3 | 3 | abcdef |
+----------+--------------+--------------+--------+
출력 열에는 다음과 같은 의미가 있습니다.
formatID
트랜잭션xid
의formatID
부분입니다.gtrid_length
는xid
의gtrid
부분의 길이 (바이트 단위)입니다.bqual_length
는xid
의bqual
부분의 길이 (바이트 단위)입니다.data
는xid
의gtrid
및bqual
부분의 연결입니다.