Oracle 5.0 Reference Manual page 1142

Table of Contents

Advertisement

Some examples of distributed transactions:
• An application may act as an integration tool that combines a messaging service with an RDBMS.
The application makes sure that transactions dealing with message sending, retrieval, and
processing that also involve a transactional database all happen in a global transaction. You can
think of this as "transactional email."
• An application performs actions that involve different database servers, such as a MySQL server
and an Oracle server (or multiple MySQL servers), where actions that involve multiple servers must
happen as part of a global transaction, rather than as separate transactions local to each server.
• A bank keeps account information in an RDBMS and distributes and receives money through
automated teller machines (ATMs). It is necessary to ensure that ATM actions are correctly reflected
in the accounts, but this cannot be done with the RDBMS alone. A global transaction manager
integrates the ATM and database resources to ensure overall consistency of financial transactions.
Applications that use global transactions involve one or more Resource Managers and a Transaction
Manager:
• A Resource Manager (RM) provides access to transactional resources. A database server is one
kind of resource manager. It must be possible to either commit or roll back transactions managed by
the RM.
• A Transaction Manager (TM) coordinates the transactions that are part of a global transaction. It
communicates with the RMs that handle each of these transactions. The individual transactions
within a global transaction are "branches" of the global transaction. Global transactions and their
branches are identified by a naming scheme described later.
The MySQL implementation of XA MySQL enables a MySQL server to act as a Resource Manager
that handles XA transactions within a global transaction. A client program that connects to the MySQL
server acts as the Transaction Manager.
To carry out a global transaction, it is necessary to know which components are involved, and
bring each component to a point when it can be committed or rolled back. Depending on what each
component reports about its ability to succeed, they must all commit or roll back as an atomic group.
That is, either all components must commit, or all components must roll back. To manage a global
transaction, it is necessary to take into account that any component or the connecting network might
fail.
The process for executing a global transaction uses two-phase commit (2PC). This takes place after
the actions performed by the branches of the global transaction have been executed.
1. In the first phase, all branches are prepared. That is, they are told by the TM to get ready to
commit. Typically, this means each RM that manages a branch records the actions for the branch in
stable storage. The branches indicate whether they are able to do this, and these results are used
for the second phase.
2. In the second phase, the TM tells the RMs whether to commit or roll back. If all branches indicated
when they were prepared that they will be able to commit, all branches are told to commit. If any
branch indicated when it was prepared that it will not be able to commit, all branches are told to roll
back.
In some cases, a global transaction might use one-phase commit (1PC). For example, when a
Transaction Manager finds that a global transaction consists of only one transactional resource (that is,
a single branch), that resource can be told to prepare and commit at the same time.
13.3.7.1. XA Transaction SQL Syntax
To perform XA transactions in MySQL, use the following statements:
XA {START|BEGIN}
XA Transactions
xid
[JOIN|RESUME]
1122

Advertisement

Table of Contents
loading

This manual is also suitable for:

Mysql 5.0

Table of Contents