67.4. Transacciones de dos fases #

PostgreSQL admite un protocolo de confirmación de dos fases (2PC) que permite que múltiples sistemas distribuidos trabajen juntos de manera transaccional. Los comandos son PREPARE TRANSACTION, COMMIT PREPARED y ROLLBACK PREPARED. Las transacciones de dos fases están destinadas a ser utilizadas por sistemas externos de gestión de transacciones. PostgreSQL sigue las características y el modelo propuesto por el estándar X/Open XA, pero no implementa algunos aspectos menos utilizados.

Cuando el usuario ejecuta PREPARE TRANSACTION, los únicos comandos siguientes posibles son COMMIT PREPARED o ROLLBACK PREPARED. En general, se pretende que este estado preparado sea de muy corta duración, pero los problemas de disponibilidad externa podrían hacer que las transacciones permanezcan en este estado durante un intervalo prolongado. Las transacciones preparadas de corta duración se almacenan únicamente en la memoria compartida y en el WAL. Las transacciones que abarcan puntos de control (checkpoints) se registran en el directorio pg_twophase. Las transacciones que están preparadas actualmente se pueden inspeccionar usando pg_prepared_xacts.