Amazon RDS for PostgreSQL 17.4
a year ago
- #Amazon RDS
- #PostgreSQL
- #Database Isolation
- PostgreSQL uses MVCC for transaction isolation, with 'Read Uncommitted' and 'Read Committed' both acting as Read Committed, 'Repeatable Read' providing Snapshot Isolation, and 'Serializable' ensuring Serializability.
- Amazon RDS for PostgreSQL is a managed service automating tasks like provisioning, replication, and backups, with Multi-AZ deployments enhancing fault tolerance through synchronous replication.
- RDS provides primary and reader endpoints; the primary supports all isolation levels, while secondaries do not support Serializable, limiting the strongest consistent level to Snapshot Isolation.
- Testing involved a Jepsen-adapted workload on RDS clusters, focusing on transactions over integer lists to detect isolation anomalies via dataflow dependencies.
- Amazon RDS for PostgreSQL exhibited G-nonadjacent cycles (violating Snapshot Isolation), including Long Fork anomalies, across all tested versions (13.15 to 17.4).
- The anomalies suggest RDS may offer Parallel Snapshot Isolation, weaker than single-node PostgreSQL's Strong Snapshot Isolation, potentially affecting transaction consistency.
- Users are advised to scrutinize transaction structures for Long Fork risks or restrict safety-critical operations to the writer endpoint to mitigate anomalies.
- Jepsen's findings are experimental, demonstrating bugs but not proving correctness, with no compensation received for the independent analysis.