预发布版本文档。 PostgreSQL 19beta4 为测试版本,最终发布内容可能有所不同。
67.4. 两阶段事务 #
PostgreSQL 支持两阶段提交(2PC)协议,它允许多个分布式系统以事务方式协同工作。相关命令是 PREPARE
TRANSACTION、COMMIT PREPARED 和
ROLLBACK PREPARED。两阶段事务旨在供外部事务管理系统使用。PostgreSQL 遵循 X/Open XA 标准提出的特性和模型,但没有实现其中某些不太常用的部分。
当用户执行 PREPARE TRANSACTION 后,对于该事务,接下来只能执行 COMMIT PREPARED
或 ROLLBACK PREPARED。一般来说,这种预备状态预期只会持续很短时间,但外部可用性问题可能意味着事务会在这种状态下停留较长一段时间。短期存在的预备事务只存储在共享内存和 WAL 中。跨越检查点的事务会记录在
pg_twophase 目录中。当前处于预备状态的事务可通过
pg_prepared_xacts 查看。