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
P4Lost Update
A5ARead Skew
A5BWrite Skew

Temporal

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

PhenomenonA.K.A.
ProcessSession
Real-Time
Stale Read

Other

PhenomenonA.K.A.
Lost WriteWrite Loss