Read Committed
Die gängigste Transaktions-Isolationsstufe (und PostgreSQLs Standardeinstellung). Eine Abfrage sieht nur Daten, die bei ihrem Start bereits committet waren — nie unfertige („dirty") Änderungen anderer Transaktionen. Verschiedene Abfragen derselben Transaktion können dabei aber unterschiedliche Schnappschüsse sehen.
Garantien: keine Dirty Reads (die unbestätigten Änderungen einer fremden Transaktion sieht man nie). Erlaubte Anomalien: Non-Repeatable Reads (dasselbe SELECT zweimal ausgeführt → unterschiedliche Ergebnisse, falls dazwischen jemand committet hat) und Phantom Reads (plötzlich auftauchende neue Zeilen). In PostgreSQL bekommt jede *Anweisung* einen neuen Snapshot. Der Kompromiss: hohe Nebenläufigkeit und wenige Sperren, aber schwächere Konsistenzgarantien als Repeatable Read oder Serializable. Eine klassische Falle: „Read-Modify-Write" unter Read Committed führt ohne SELECT ... FOR UPDATE zu Lost Updates. Für die meisten Webanwendungen reicht es; wo Korrektheit zwingend ist, greift man zu Repeatable Read oder Serializable. Eine Stufe darunter: Read Uncommitted (erlaubt Dirty Reads, in Postgres praktisch inexistent).