PostgreSQL unterstützt keine Dirty Reads (READ UNCOMMITTED
). Wie @a_horse_with_no_name betonte, das Handbuch
sagt:
Dies entspricht der Regel im Standard, dass die Datenbank nicht unterstützte Isolationsstufen als die am stärksten unterstützte Stufe behandeln muss.
Es gibt keine unterstützte Möglichkeit, nicht festgeschriebene Tupel aus einer laufenden Transaktion in PostgreSQL zu lesen. Wenn es so wäre, könnten Sie Dinge wie doppelte Werte für Primärschlüssel und allgemeines Chaos bekommen, also wäre es sowieso nicht sehr nützlich.
Es gibt einige Möglichkeiten, wie laufende Transaktionen kommunizieren und sich gegenseitig beeinflussen können:
- Über eine gemeinsam genutzte Client-Anwendung (natürlich)
SEQUENCE
(undSERIAL
) Aktualisierungen erfolgen sofort, nicht zum Commit-Zeitpunkt- beratendes Sperren
- Normale Zeilen- und Tabellensperre, aber innerhalb der Regeln von
READ COMMITTED
Sichtbarkeit UNIQUE
undEXCLUSION
Einschränkungen
Es ist möglich, nicht festgeschriebene Tupeldaten mit Superuser-Debug-Einrichtungen wie anzuzeigen pageinspect , aber nur, wenn Sie das Innere des Datenspeichers wirklich verstehen. Es ist nur für die Datenwiederherstellung und das Debugging geeignet. Sie sehen mehrere Versionen von Daten in einer Wand mit hexadezimaler Ausgabe.