> There are several quirks in MySQL which might make real life > harder than a plain feature comparison might express. > > One of the really annoying things is that it actually lies about > what it is doing.
Along those lines, I remember when that in a 2009 paper on concurrency techniques[1] Michael J. Cahill noted that the work of a transaction in MySQL is made visible to other transactions, and the COMMIT request (or stand-alone statement) returns to the caller, before the work of the transaction is guaranteed to appear if there is a crash and subsequent recovery. Essentially, the only mode available in MySQL was what you get with PostgreSQL if you request synchronous_commit = off. PostgreSQL defaults to waiting to make the transaction visible and returning to the caller until after it is guarateed to persist; although it gives you the option, on a transaction-by-transaction basis, to take the faster route of skipping that guarantee.
(Apologies if that was covered in one of the referenced links -- I skimmed them and didn't spot this issue, but it might be there somewhere....)
[1] Michael James Cahill. 2009. Serializable Isolation for Snapshot Databases. Sydney Digital Theses. University of Sydney, School of Information Technologies. http://hdl.handle.net/2123/5353