Kokius PostgreSQL transakcijų izoliacijos lygius žinote?
sobes.tech AI
Atsakymas iš AI
PostgreSQL yra keturi transakcijų izoliacijos lygiai, apibrėžti SQL standarto:
-
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.
-
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ų.
-
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.
-
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;