Co to są Transakcje ACID poziomy izolacji historia przetwarzania transakcji bazy danych

Co to są transakcje bazy danych? - podejście akademickie
Systemy zarządzania bazy danych wspierają wszystkie opisane poniżej warunki:

Transakcje (ACID) to niepodzielny logicznie blok instrukcji. Blok instrukcji jest to zbiór modyfikacji w bazie danych, który musi być albo wykonany w całości, albo niewykonany wcale. Przyjmuje się, że transakcje ACID i protokoły zarządzania transakcji muszą posiadać właściwość ACID wyrażoną przez następujące postulaty:
– Atomowość ACID (ang. atomicity) - każda transakcja stanowi pojedynczą i niepodzielną jednostkę przetwarzania (a także odtwarzania) – w transakcji nie ma więc podtransakcji. Transakcja jest bądź wykonana w całości, bądź też żaden jej efekt nie jest widoczny w bazach danych;
– Spójność ACID (ang. consistency) - transakcja rozpoczynając się w spójnym stanie bazy danych pozostawia bazę danych w stanie spójnym (tym samym lub innym). Jeśli transakcja narusza warunki spójności bazy danych, to zostaje odrzucona;
– Odizolowanie ACID (ang. isolation) - zmiany wykonane przez transakcje ACID nie zatwierdzoną nie są widziane przez inne transakcje ACID (chyba, że przyjęty poziom izolacji na to zezwala);
– Trwałość ACID (ang. duration) - zmiany w bazie danych dokonane przez transakcje ACID zatwierdzoną są trwałe w bazach danych, tzn. nawet w przypadku awarii systemu musi istnieć możliwość ich odtworzenia.

     W niektórych koncepcjach systemów zarządzania bazami danych (systemy obiektowe, systemy wspomagające pracę grupową, systemy korporacyjne), postulaty ACID są modyfikowane. Na przykład w przypadku tzw. transakcji długotrwałych wprowadza się pojęcie podtransakcji. Z kolei postulat odizolowania transakcji jest najczęściej osłabiany przez jawne określenie poziomu izolacji. Celem obniżenia izolacji poziomu jest zwiększenie współbieżności transakcji, wiąże się to jednak z ryzykiem powstania pewnych anomalii.


     Aby mówić o poziomach izolacji i towarzyszących im anomaliom (zjawiskom niepożądanym), należy tutaj wspomnieć o historii przetwarzania transakcji. Ciąg operacji pochodzących z transakcji przetwarzanych w danej chwili przez system zarządzania bazy danych nazywamy historią przetwarzania transakcji. W czasie przetwarzania takiej historii może dojść do kilku niepożądanych zjawisk:

Historia przetwarzania transakcji:

– Historia przetwarzania transakcji opisuje przetwarzanie odtwarzalne, jeśli każda transakcja jest zatwierdzona po zatwierdzeniu wszystkich transakcji, z których czyta. W innym wypadku mamy do czynienia ze zjawiskiem braku odtwarzalności;
– Historia przetwarzania transakcji przedstawia przetwarzanie-bez kaskadowych odrzuceń, jeżeli żadna z transakcji wchodzących w zawartość historii nie czyta z transakcji nie-zatwierdzonych. W innym razie mamy do czynienia ze zjawiskiem kaskady odrzuceń;
– Historia przetwarzania transakcji pokazuje przetwarzanie-bez anomalii-powtórnego-czytania, jeśli żadna z transakcji wchodzących w skład historii nie zapisuje w transakcjach nie-zatwierdzonych. W przeciwnym wypadku mamy do czynienia ze zjawiskiem anomalii-powtórnego-czytania;
– Historia przetwarzania transakcji określa przetwarzanie-bez fantomów, jeżeli żadna z transakcji wchodzących w strukturę historii niezmienia zbioru danych, na których działa jakakolwiek transakcja nie zatwierdzona. W przeciwnym razie jest to zjawisko pojawiania się fantomów.

     Wyróżniamy cztery poziomy izolacji transakcji: najniższe poziomy izolacji (0) – zapewnia największą współbieżność, ale wiąże się z największym ryzykiem (mogą występować anomalie omawiane w poprzednim akapicie); najwyższe poziomy izolacji (3) – pozwala uniknąć wszelkich anomalii, ale jest najbardziej kosztowny (często ponoszenie tych kosztów jest niepotrzebne).

     W tabeli poniżej przedstawiłem całościowe zestawienie poziomów izolacji wraz z występującymi anomaliami – zjawiskami niepożądanymi:



Źródło (moje zredagowanie do przyjaznej formy): Paul Benon-Davies (2003) : Systemy baz danych. Wydawnictwo Naukowo-Techniczne – Warszawa.