Sobes.tech
Senior

Welke isolatieniveaus van PostgreSQL transacties ken je?

sobes.tech AI

Antwoord van AI

In PostgreSQL zijn er vier isolatieniveaus voor transacties, zoals gedefinieerd door de SQL-standaard:

  1. Read Uncommitted — het laagste isolatieniveau. Staat toe dat gegevens worden gelezen die nog niet zijn bevestigd (dirty reads). In PostgreSQL gedraagt het zich in feite als Read Committed, omdat dirty reads niet worden ondersteund.

  2. Read Committed — standaardniveau. De transactie ziet alleen de gegevens die op het moment van elke individuele query zijn bevestigd. Er kunnen wijzigingen door andere transacties optreden tussen de queries binnen dezelfde transactie.

  3. Repeatable Read — de transactie ziet een momentopname van de gegevens bij het begin. Alle queries binnen de transactie zien dezelfde gegevens, zelfs als andere transacties ze wijzigen en bevestigen. Voorkomt niet-herhaalbare reads, maar staat phantom reads toe.

  4. Serializable — het strengste isolatieniveau. Garandeert volledige serialisatie van transacties, voorkomt phantom reads en zorgt voor gedrag dat gelijk is aan sequentiële uitvoering.

Voorbeeld van het instellen van het isolatieniveau:

BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- SQL-operaties
COMMIT;