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:
-
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é.
-
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.
-
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.
-
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;