sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL-transaktionsisolering LÄS OCKSÅ

PostgreSQL stöder inte dirty reads (READ UNCOMMITTED ). Som @a_horse_with_no_name påpekade, handboken säger:

Detta är passande med regeln i standarden att databasen måste behandla icke-stödda isoleringsnivåer som den starkaste stödda nivån.

Det finns inget stöds sätt att läsa oengagerade tupler från en pågående transaktion i PostgreSQL. Om det fanns skulle du kunna få saker som dubbletter av värden för primärnycklar och allmänt kaos så det skulle inte vara särskilt användbart ändå.

Det finns några sätt pågående transaktioner kan kommunicera och påverka varandra:

  • Via en delad klientapplikation (naturligtvis)
  • SEQUENCE (och SERIAL ) uppdateringar sker omedelbart, inte vid bekräftelsetid
  • rådgivande låsning
  • Normal rad- och tabelllåsning, men inom reglerna för READ COMMITTED synlighet
  • UNIQUE och EXCLUSION begränsningar

Det är möjligt att se oengagerad tuppeldata med hjälp av enbart superanvändare felsökningsfaciliteter som sidainspektera , men bara om du verkligen förstår insidan av datalagret. Den är endast lämplig för dataåterställning och felsökning. Du kommer att se flera versioner av data i en vägg med hexadecimal utdata.



  1. Vanligt tabelluttryck i MySQL

  2. Dynamisk kedjad valruta

  3. Unicode (hexadecimala) tecken i MySQL

  4. MySQL infoga ISO8601 Datetime-format