sql >> Database >  >> RDS >> PostgreSQL

Isolatie van PostgreSQL-transacties LEZEN NIET COMMITTED

PostgreSQL ondersteunt geen vuile leesbewerkingen (READ UNCOMMITTED ). Zoals @a_horse_with_no_name opmerkte, de handleiding zegt:

Dit past bij de regel in de standaard dat de database niet-ondersteunde isolatieniveaus moet behandelen als het sterkst ondersteunde niveau.

Er is geen ondersteunde manier om niet-vastgelegde tuples te lezen van een lopende transactie in PostgreSQL. Als dat zo was, zou je dingen als dubbele waarden voor primaire sleutels en algemene chaos kunnen krijgen, dus het zou sowieso niet erg handig zijn.

Er zijn zijn een paar manieren waarop lopende transacties kunnen communiceren en elkaar kunnen beïnvloeden:

  • Via een gedeelde clienttoepassing (uiteraard)
  • SEQUENCE (en SERIAL ) updates gebeuren onmiddellijk, niet op de vastleggingstijd
  • adviserende vergrendeling
  • Normale rij- en tabelvergrendeling, maar binnen de regels van READ COMMITTED zichtbaarheid
  • UNIQUE en EXCLUSION beperkingen

Het is mogelijk om niet-vastgelegde tuple-gegevens te zien met behulp van debug-faciliteiten die alleen voor supergebruikers zijn, zoals pagina-inspectie , maar alleen als je de ingewanden van de datastore echt begrijpt. Het is alleen geschikt voor gegevensherstel en foutopsporing. Je ziet meerdere versies van gegevens in een muur van hexadecimale uitvoer.



  1. Hoe krijg ik een lijst met databases?

  2. 2 manieren om alle opgeslagen procedures in MySQL op te sommen

  3. Room - Gebruik van externe SQLites en interne DB

  4. PostgresSQL Nested Loops - Wanneer besluit de planner om Nested Loop te gebruiken bij het doen van een INNER JOIN?