PostgreSQLマルチAZクラスタにおけるトランザクションの可視性問題:Jepsenレポートの詳細分析
2025-05-03

最近のJepsenレポートは、Amazon RDS for PostgreSQLマルチAZクラスタにおける長年のトランザクションの可視性問題を指摘しています。トランザクションが可視になる順序は、プライマリとレプリカで異なるという問題です。これはデータの損失や破損を引き起こすものではなく、シングルAZデプロイメントやAuroraデータベースには影響しません。「ロングフォーク」アノマリーに関連しており、スナップショット分離に違反しています。この投稿では、根本原因(ProcArrayとWALの非同期更新)を詳細に説明し、それがどのように矛盾した結果につながるかを示しています(例:AliceとBobがHacker Newsの記事のランキングを異なって観測する)。アプリケーションの正確性に影響を与えることは稀ですが、PostgreSQLクラスタのエンタープライズレベルの機能のためには修正が不可欠です。AWSはPostgreSQLコミュニティと協力してこの問題を解決しており、トランザクション順序に関するアプリケーションの仮定を見直したり、明示的な同期メカニズムを使用したりするなどの回避策を提供しています。