Sobes.tech
Senior

Ce niveluri de izolare a tranzacțiilor PostgreSQL cunoști?

sobes.tech AI

Răspuns de la AI

În PostgreSQL, există patru niveluri de izolare a tranzacțiilor definite de standardul SQL:

  1. Read Uncommitted — cel mai scăzut nivel de izolare. Permite citirea datelor care nu au fost încă confirmate (dirty reads). În PostgreSQL, se comportă practic ca Read Committed, deoarece dirty reads nu sunt suportate.

  2. Read Committed — nivel implicit. Tranzacția vede doar datele care au fost confirmate la momentul fiecărei interogări individuale. Pot apărea modificări făcute de alte tranzacții între interogări în cadrul aceleiași tranzacții.

  3. Repeatable Read — tranzacția vede o fotografie a datelor la momentul începerii. Toate interogările din cadrul tranzacției văd aceleași date, chiar dacă alte tranzacții le modifică și le confirmă. Previne citirile nerepetabile, dar permite citiri fantomă.

  4. Serializable — cel mai strict nivel de izolare. Asigură o serializare completă a tranzacțiilor, previne citirile fantomă și asigură un comportament echivalent cu executarea secvențială.

Exemplu de configurare a nivelului de izolare:

BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- Operațiuni SQL
COMMIT;