Sobes.tech
Senior

Jakie poziomy izolacji transakcji PostgreSQL znasz?

sobes.tech AI

Odpowiedź od AI

W PostgreSQL istnieją cztery poziomy izolacji transakcji zdefiniowane przez standard SQL:

  1. Read Uncommitted — najniższy poziom izolacji. Pozwala na odczyt danych, które jeszcze nie zostały zatwierdzone (dirty reads). W PostgreSQL zachowuje się praktycznie jak Read Committed, ponieważ dirty reads nie są obsługiwane.

  2. Read Committed — domyślny poziom. Transakcja widzi tylko dane, które zostały zatwierdzone w momencie każdego pojedynczego zapytania. Między zapytaniami w ramach transakcji mogą pojawiać się zmiany dokonane przez inne transakcje.

  3. Repeatable Read — transakcja widzi migawkę danych na początku transakcji. Wszystkie zapytania w transakcji widzą te same dane, nawet jeśli inne transakcje je zmieniają i zatwierdzają. Zapobiega to niepowtarzalnym odczytom (non-repeatable read), ale pozwala na odczyty phantom.

  4. Serializable — najbardziej rygorystyczny poziom izolacji. Gwarantuje pełną serializację transakcji, zapobiega odczytom phantom i zapewnia zachowanie równoważne wykonaniu sekwencyjnemu.

Przykład ustawienia poziomu izolacji:

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