No: The commit has the same guarantees as a synchronous commit w.r.t. data consistency. The commit can only fail (as a whole) due to hardware problems or postgres backend crashes.
And yes: The client commit returns, but the server can fail later and not persist the transaction and it will be lost (again as a whole).
Your application should be able to tolerate losing the latest committed transactions if you use this.
The difference to fsync=off is that a server crash will leave the database is a consistent state with just the latest transactions lost.
From: Anibal David Acosta <aa@xxxxxxxxxxxx>
To: pgsql-performance@xxxxxxxxxxxxxx
Sent: Monday, August 1, 2011 6:29 AM
Subject: synchronous_commit off
Can a transaction committed asynchronously report an error, duplicate key or something like that, causing a client with a OK transaction but server with a FAILED transaction.
Thanks