Sobes.tech
Senior

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:

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

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

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

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