Sobes.tech
Middle

Jakie są typy izolacji transakcji?

sobes.tech AI

Odpowiedź od AI

Izolacja transakcji określa, na ile jedna transakcja może widzieć pośrednie zmiany innych równocześnie wykonujących się transakcji.

Standard SQL definiuje cztery poziomy izolacji:

  1. Read Uncommitted (Odczyt niezatwierdzony): Najniższy poziom. Transakcja może odczytywać niezatwierdzone zmiany innych transakcji (brudne odczytanie).
  2. Read Committed (Odczyt zatwierdzony): Transakcja może odczytywać tylko dane, które zostały zatwierdzone przez inne transakcje. Unika "brudnego" odczytu.
  3. Repeatable Read (Powtarzalny odczyt): Transakcja gwarantuje, że dane odczytane podczas transakcji nie zmienią się przy powtórnym odczycie. Unika "brudnego" odczytu i "niepowtarzalnego" odczytu. Mogą wystąpić "fantomy".
  4. Serializable (Seryjny): Najwyższy poziom izolacji. Gwarantuje, że równoległe transakcje będą wykonywać się tak, jakby były sekwencyjne. Unika wszystkich niepożądanych zjawisk: "brudnego" odczytu, "niepowtarzalnego" odczytu i "fantomów".

Niepożądane zjawiska podczas równoległego wykonywania transakcji:

  • Dirty Read (Brudny odczyt): Transakcja A odczytuje dane zmodyfikowane przez transakcję B, które jeszcze nie zostały zatwierdzone. Jeśli transakcja B cofnie zmiany, transakcja A będzie pracować z nieprawidłowymi danymi.
  • Non-repeatable Read (Niepowtarzalny odczyt): Transakcja A odczytuje te same dane dwukrotnie, ale między odczytami transakcja B zatwierdza zmianę tych danych. W efekcie transakcja A otrzymuje różne wartości.
  • Phantom Read (Odczyt fantomów): Transakcja A wykonuje zapytanie zwracające zestaw wierszy. Transakcja B zatwierdza wstawienie lub usunięcie wierszy spełniających kryteria zapytania A. Przy ponownym wykonaniu tego samego zapytania, transakcja A otrzymuje inny zestaw wierszy.

Podsumowująca tabela niepożądanych zjawisk według poziomów izolacji:

Poziom izolacji Brudny odczyt Niepowtarzalny odczyt Fantomy
Read Uncommitted Tak Tak Tak
Read Committed Nie Tak Tak
Repeatable Read Nie Nie Tak
Serializable Nie Nie Nie

Wybór poziomu izolacji wpływa na wydajność i poprawność działania aplikacji. Im wyższy poziom izolacji, tym wyższe koszty.