Kādus PostgreSQL transakciju izolācijas līmeņus jūs zināt?
sobes.tech AI
Atbilde no AI
PostgreSQL ir ir četri transakciju izolācijas līmeņi, kas definēti saskaņā ar SQL standartu:
-
Read Uncommitted — zemākais izolācijas līmenis. Atļauj lasīt datus, kas vēl nav apstiprināti (dirty reads). PostgreSQL praksē darbojas kā Read Committed, jo dirty reads netiek atbalstīti.
-
Read Committed — noklusējuma līmenis. Transakcija redz tikai datus, kas ir apstiprināti katra atsevišķa pieprasījuma brīdī. Starp pieprasījumiem transakcijas ietvaros var parādīties izmaiņas, ko veikušas citas transakcijas.
-
Repeatable Read — transakcija redz datu momentuzņēmumu tās sākuma brīdī. Visas transakcijas iekšējās pieprasījumi redz tās pašas datus, pat ja citas transakcijas tos maina un apstiprina. Novērš neizpildāmas lasīšanas (non-repeatable read), bet ļauj parādīties fantoma lasījumiem.
-
Serializable — visstingrākais izolācijas līmenis. Garantē pilnīgu transakciju serializāciju, novērš fantoma lasījumus un nodrošina uzvedību, kas līdzinās secīgu izpildi.
Izolācijas līmeņa iestatīšanas piemērs:
BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- SQL operācijas
COMMIT;