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

PostgreSQL-transaktionsisolering LÆS UKOMMITTERET

PostgreSQL understøtter ikke dirty reads (READ UNCOMMITTED ). Som @a_horse_with_no_name påpegede, manualen siger:

Dette passer med reglen i standarden om, at databasen skal behandle ikke-understøttede isolationsniveauer som det stærkest understøttede niveau.

Der er ingen understøttet måde at læse ikke-forpligtede tuples fra en igangværende transaktion i PostgreSQL. Hvis der var, ville du være i stand til at få ting som duplikerede værdier for primærnøgler og generelt kaos, så det ville alligevel ikke være særlig nyttigt.

Der er et par måder, hvorpå igangværende transaktioner kan kommunikere og påvirke hinanden:

  • Via en delt klientapplikation (selvfølgelig)
  • SEQUENCE (og SERIAL ) opdateringer sker med det samme, ikke på commit-tidspunktet
  • rådgivningslåsning
  • Normal række- og tabellåsning, men inden for reglerne for READ COMMITTED synlighed
  • UNIQUE og EXCLUSION begrænsninger

Det er muligt at se ikke-forpligtede tuple-data ved at bruge superbruger-kun debug-faciliteter såsom sidesyn , men kun hvis du virkelig forstår det indre af datalageret. Det er kun egnet til datagendannelse og fejlfinding. Du vil se flere versioner af data i en væg med hexadecimal output.



  1. Oracle:flere tabelopdateringer => ORA-01779:kan ikke ændre en kolonne, der er knyttet til en ikke-nøglebevaret tabel

  2. Sådan ombrydes lange tekstlinjer i SQLite-resultater

  3. Kaldning af en lagret procedure inden for en lagret procedure

  4. Brug af Easysoft ODBC-drivere med Informatica PowerCenter