Sobes.tech
Senior

Kokius PostgreSQL transakcijų izoliacijos lygius žinote?

sobes.tech AI

Atsakymas iš AI

PostgreSQL yra keturi transakcijų izoliacijos lygiai, apibrėžti SQL standarto:

  1. Read Uncommitted — žemiausias izoliacijos lygis. Leidžia skaityti duomenis, kurie dar nėra patvirtinti (dirty reads). PostgreSQL praktiškai veikia kaip Read Committed, nes dirty reads nepalaikomi.

  2. Read Committed — numatytasis lygis. Transakcija mato tik duomenis, kurie buvo patvirtinti kiekvieno atskiro užklausos metu. Tarp užklausų gali įvykti pakeitimai, atlikti kitų transakcijų.

  3. Repeatable Read — transakcija mato duomenų momentinį vaizdą, kai ji pradėta. Visos užklausos transakcijos mato tas pačias duomenis, net jei kitos transakcijos jas keičia ir patvirtina. Užkerta kelią nepakartojamoms skaitymams (non-repeatable read), bet leidžia vaiduoklių skaitymus.

  4. Serializable — griežčiausias izoliacijos lygis. Garantuoja visišką transakcijų serializaciją, užkerta kelią vaiduoklių skaitymams ir užtikrina elgseną, lygiavertę sekvenciniam vykdymui.

Pavyzdys izoliacijos lygio nustatymo:

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