66.4. Two-Phase Transactions#
PostgreSQL supports a two-phase commit (2PC) protocol that allows multiple distributed systems to work together in a transactional manner. The commands arePREPARE TRANSACTION
,COMMIT PREPARED
andROLLBACK PREPARED
. Two-phase transactions are intended for use by external transaction management systems.PostgreSQL follows the features and model proposed by the X/Open XA standard, but does not implement some less often used aspects.
When the user executesPREPARE TRANSACTION
, the only possible next commands areCOMMIT PREPARED
orROLLBACK PREPARED
. In general, this prepared state is intended to be of very short duration, but external availability issues might mean transactions stay in this state for an extended interval. Short-lived prepared transactions are stored only in shared memory and WAL. Transactions that span checkpoints are recorded in thepg_twophase
directory. Transactions that are currently prepared can be inspected usingpg_prepared_xacts
.