Jeremy Schneider doesn’t wait for a response:
Postgres database-level “synchronous replication” does not actually mean the replication is synchronous. It’s a bit of a lie really. The replication is actually – always – asynchronous. What it actually means is “when the client issues a
COMMITthen pause until we know the transaction is replicated.” In fact the primary writer database doesn’t need to wait for the replicas to catch up UNTIL the client issues aCOMMIT…and even then it’s only a single individual connection which waits. This has many interesting properties.
Click through for the pros and cons of this technical decision.