JEPSEN

Phenomena

A phenomenon is something a database does that someone, somewhere, thought was a bad idea. Whether a phenomenon is legal or not depends on the system’s consistency model. For example, G1a (Aborted Read) is legal under Read Uncommitted, but illegal under Read Committed.

Adya

These phenomena, based on Adya’s 1999 thesis, characterize consistency models (mostly) in terms of dependencies between transactions.

PhenomenonA.K.A.
G0Write Cycle
G1aAborted Read
G1bIntermediate Read
G1cCyclic Information Flow
G-singleSingle Anti-dependency Cycle
G-nonadjacentNon-adjacent Anti-dependency Cycle
G2-itemItem Anti-dependency Cycle
G2Anti-dependency Cycle

SQL

From the ANSI SQL standard1 and subsequent work by Berenson et al, these phenomena characterize SQL isolation levels. They are defined in terms of event order, rather than dataflow, which makes them less useful for distributed systems.

PhenomenonA.K.A.
P0Dirty Write
P1 (A1)Dirty Read
P2 (A2)Non-Repeatable Read, Fuzzy Read
P3 (A3)Phantom

Temporal

These phenomena involve the temporal order of events, either on a single process or across multiple processes.

PhenomenonA.K.A.
Stale Read
Real-Time

Other

PhenomenonA.K.A.
Lost WriteWrite Loss