Firebird byl náhodou docela dobrej, jen měl tendenci postupně zpomalovat a zpomalovat při intenzivních updatech...
V ANSI X3.135-1992(R1998) co tu mám je na str. 54 napsáno:
The execution of concurrent SQL-transactions at isolation level 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.
The isolation level specifies the kind of phenomena that can occur during the execution of concurrent SQL-transactions. The following phenomena are possible:
Načež následuje popis Dirty read, Non repeatable read a Phantom read. Takže serializovatelnost není definovaná výskytem těchto jevů.
Taková definice serializable umožňuje dokonce víc než klasické dvoufázové zamykání - třeba využít efektu komutativních operací pro zvýšení paralelizmu transakcí.
Typický příklad by byl vyskladňování zboží - když bude jeden dost chytrý aby odečtení ze skladu napsal jako UPDATE sklad SET pocet = pocet - ?mnozstvi WHERE id=?zbozi AND pocet>=?mnozstvi a úspěch zjišťoval jen podle update countu příkazu aniž by se zajímal kolik ze přesně zboží na skladě je, vyhne se jevu hotspotu (transakcím hádajícím se o často měněná data)!
Něco takového je v databázích stále ještě bohužel scifi :)