Koje nivoe izolacije transakcija PostgreSQL poznajete?
sobes.tech АИ
Одговор од АИ
U PostgreSQL-u postoje četiri nivoa izolacije transakcija definisana SQL standardom:
-
Read Uncommitted — najniži nivo izolacije. Dozvoljava čitanje podataka koji još nisu potvrđeni (dirty reads). U PostgreSQL-u, u praksi, se ponaša kao Read Committed, jer dirty reads nisu podržani.
-
Read Committed — podrazumevani nivo. Transakcija vidi samo podatke koji su potvrđeni u trenutku svakog pojedinačnog upita. Između upita unutar transakcije mogu se pojaviti promene koje su izvršile druge transakcije.
-
Repeatable Read — transakcija vidi snimak podataka u trenutku njenog početka. Svi upiti unutar transakcije vide iste podatke, čak i ako ih druge transakcije menjaju i potvrđuju. Sprečava neponovljivo čitanje (non-repeatable read), ali dozvoljava phantom čitanje.
-
Serializable — najstrožiji nivo izolacije. Garantuje potpunu serializaciju transakcija, sprečava phantom čitanje i obezbeđuje ponašanje koje je ekvivalentno sekvencijalnom izvršavanju.
Primer podešavanja nivoa izolacije:
BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- SQL operacije
COMMIT;