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