2 ms·
He writes "Like the way ANSI thinks about it, if you eliminate dirty reads, non-repeatable reads, and phantom reads, you’re serializable.", but that isn't true.
by mjw1007 9y ago
He writes "Like the way ANSI thinks about it, if you eliminate dirty reads, non-repeatable reads, and phantom reads, you’re serializable.", but that isn't true.
The sql-92 standard was already clear:
« SERIALIZABLE is guaranteed to be serializable. A serializable execution is
defined to be an execution of the operations of concurrently executing SQL-transactions that produces the same effect as some serial execution of those same SQL-transactions. A serial execution is one in which each SQL-transaction executes to completion before the next SQL-transaction begins. »
A little later it has a table showing which anomalies can happen in which isolation modes, but under the table it says
« Note: The exclusion of these phenomena or SQL-transactions executing at isolation level SERIALIZABLE is a consequence of the requirement that such transactions be serializable »
At some point someone seems to have looked at the table of anomalies and decided that it was the standard's definition of SERIALIZABLE, and the idea that the SQL standard got it wrong seems to have taken root. (The "Critique of ANSI SQL Isolation Levels" paper doesn't make this mistake.)
So it isn't surprising that, as he writes, "the ANSI definitions have not been fixed": they were never wrong.