Livello di isolamento
I livelli di isolamento della concorrenza previsti dallo standard SQL: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE. Compromesso: più isolamento significa più correttezza, ma meno throughput e più lock o abort.
Predefinito in PostgreSQL: READ COMMITTED. Predefinito in MySQL InnoDB: REPEATABLE READ. Oracle: READ COMMITTED. SERIALIZABLE garantisce un risultato equivalente a un'esecuzione seriale e richiede SSI (Serializable Snapshot Isolation) o locking completo. Fenomeni: dirty read, non-repeatable read, phantom read. Nelle implementazioni moderne lo snapshot isolation (un livello a parte, fuori dallo standard) dà l'impressione di serializzabilità senza lock, in Postgres e MySQL. Il trucco: in PostgreSQL READ COMMITTED È snapshot isolation per singolo statement, e SERIALIZABLE È SSI.