PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Isolamento delle transazioni PostgreSQL READ UNCOMMITTED

PostgreSQL non supporta letture sporche (READ UNCOMMITTED ). Come sottolineato da @a_horse_with_no_name, il manuale dice:

Ciò è conforme alla regola dello standard secondo cui il database deve considerare i livelli di isolamento non supportati come il livello supportato più forte.

Non esiste un modo supportato per leggere tuple non vincolate da una transazione in corso in PostgreSQL. Se ci fosse, saresti in grado di ottenere cose come valori duplicati per chiavi primarie e caos generale, quindi non sarebbe comunque molto utile.

Ci ci sono alcuni modi in cui le transazioni in corso possono comunicare e influenzarsi a vicenda:

  • Tramite un'applicazione client condivisa (ovviamente)
  • SEQUENCE (e SERIAL ) gli aggiornamenti avvengono immediatamente, non al momento del commit
  • blocco di avviso
  • Blocco normale di righe e tabelle, ma all'interno delle regole di READ COMMITTED visibilità
  • UNIQUE e EXCLUSION vincoli

È possibile visualizzare i dati delle tuple non vincolati utilizzando funzionalità di debug solo per superutente come ispeziona la pagina , ma solo se capisci davvero le viscere del datastore. È adatto solo per il recupero dei dati e il debug. Vedrai più versioni di dati in un muro di output esadecimale.