PostgreSQL 多 AZ 集群中的事务可见性问题

2025-05-03
PostgreSQL 多 AZ 集群中的事务可见性问题

Jepsen 的一篇报告揭示了 Amazon RDS for PostgreSQL 多 AZ 集群中存在一个长期存在的事务可见性问题:在主节点和副本节点上,事务可见的顺序可能不同。这并非数据丢失或损坏,也不会影响单 AZ 部署或 Aurora 数据库。该问题与数据库文献中已知的“长分叉”异常有关,它违反了快照隔离。文章详细解释了该问题的原因(与 ProcArray 和 WAL 异步更新有关),并举例说明了它如何导致不一致的结果(例如,Alice 和 Bob 对 Hacker News 上文章排名的不一致观察)。虽然此问题很少影响应用程序的正确性,但修复它对于 PostgreSQL 集群的企业级功能至关重要。AWS 正在与 PostgreSQL 社区合作解决此问题,并提供了变通方案,例如审查应用程序对事务排序的假设,并使用显式同步机制。