PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PostgreSQL-Transaktionsisolation READ UNCOMMITTED

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 (und SERIAL ) Aktualisierungen erfolgen sofort, nicht zum Commit-Zeitpunkt
  • beratendes Sperren
  • Normale Zeilen- und Tabellensperre, aber innerhalb der Regeln von READ COMMITTED Sichtbarkeit
  • UNIQUE und EXCLUSION 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.