Sobes.tech
Senior

Koje nivoe izolacije transakcija PostgreSQL poznajete?

sobes.tech АИ

Одговор од АИ

U PostgreSQL-u postoje četiri nivoa izolacije transakcija definisana SQL standardom:

  1. 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.

  2. 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.

  3. 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.

  4. 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;