Sobes.tech
Senior

Aké úrovne izolácie transakcií PostgreSQL poznáte?

sobes.tech AI

Odpoveď od AI

V PostgreSQL existujú štyri úrovne izolácie transakcií definované štandardom SQL:

  1. Read Uncommitted — najnižšia úroveň izolácie. Umožňuje čítanie dát, ktoré ešte neboli potvrdené (dirty reads). V PostgreSQL sa správa v podstate ako Read Committed, pretože dirty reads nie sú podporované.

  2. Read Committed — predvolená úroveň. Transakcia vidí iba dáta, ktoré boli potvrdené v okamihu každej jednotlivé otázky. Medzi otázkami v rámci transakcie môžu nastať zmeny vykonané inými transakciami.

  3. Repeatable Read — transakcia vidí snímku dát na začiatku. Všetky otázky v rámci transakcie vidia tie isté dáta, aj keď ich iné transakcie menia a potvrdzujú. Zabraňuje nevratnému čítaniu (non-repeatable read), ale umožňuje phantom čítanie.

  4. Serializable — najprísnejšia úroveň izolácie. Zaručuje úplnú serializáciu transakcií, zabraňuje phantom čítaniu a zabezpečuje správanie ekvivalentné sekvenčnému vykonávaniu.

Príklad nastavenia úrovne izolácie:

BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- SQL operácie
COMMIT;