PostgreSQL支持两阶段提交(2PC)协议,
该协议允许多个分布式系统以事务方式协同工作。命令包括
PREPARE TRANSACTION
、COMMIT PREPARED
和ROLLBACK PREPARED
。两阶段事务旨在供外部事务管理
系统使用。PostgreSQL遵循X/Open XA标准提出的功能
和模型,但未实现一些较少使用的方面。
当用户执行PREPARE TRANSACTION
时,唯一可能的下一个命令是
COMMIT PREPARED
或ROLLBACK PREPARED
。通常,
这种预备状态的设计是为了持续时间非常短,但外部可用性问题可能导致事务在
这种状态下停留较长时间。短期的预备事务仅存储在共享内存和WAL中。跨检查点
的事务会记录在pg_twophase
目录中。当前处于预备状态的事务
可以通过使用
pg_prepared_xacts
进行检查。