Jakie poziomy izolacji transakcji PostgreSQL znasz?
sobes.tech AI
Odpowiedź od AI
W PostgreSQL istnieją cztery poziomy izolacji transakcji zdefiniowane przez standard SQL:
-
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.
-
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.
-
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.
-
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;