Zarządzanie transakcjami w systemach DBMS: stany, typy i ACID
⚡ Inteligentne podsumowanie
Zarządzanie transakcjami w bazie danych traktuje jedną lub więcej operacji bazy danych jako pojedynczą jednostkę logiczną, która przenosi bazę danych z jednego spójnego stanu do drugiego. Opiera się na właściwościach ACID, zdefiniowanych stanach transakcji i harmonogramach, aby zapewnić poprawność współbieżnego dostępu.

Co to jest transakcja bazy danych?
A Transakcja w bazie danych to logiczna jednostka przetwarzania w systemie DBMS, która obejmuje jedną lub więcej operacji dostępu do bazy danych. W skrócie, transakcje w bazie danych reprezentują rzeczywiste zdarzenia w dowolnym przedsiębiorstwie.
Wszystkie typy operacji dostępu do bazy danych, które mają miejsce pomiędzy początkowymi a końcowymi instrukcjami transakcji, są traktowane jako pojedyncza transakcja logiczna w systemie DBMS. Podczas transakcji baza danych jest niespójna. Dopiero po zatwierdzeniu transakcji jej stan zmienia się z jednego spójnego na drugi.

Fakty dotyczące transakcji w bazie danych
- Transakcja to jednostka programowa, której wykonanie może, ale nie musi, zmienić zawartość bazy danych.
- Koncepcja transakcji w systemie DBMS jest realizowana jako pojedyncza jednostka.
- Jeśli operacje na bazie danych nie powodują jej aktualizacji, a jedynie pobierają dane, ten typ transakcji nazywa się transakcją tylko do odczytu.
- Udana transakcja może zmienić bazę danych z jednego SPÓJNEGO STANU na inny.
- Transakcje w systemie DBMS muszą być atomowe, spójne, odizolowane i trwałe.
- Jeśli baza danych była w niespójnym stanie przed transakcją, pozostanie w niespójnym stanie po transakcji.
Dlaczego współbieżność transakcji jest potrzebna?
Baza danych to zasób współdzielony. Jest wykorzystywana przez wielu użytkowników i procesy jednocześnie. Przykładami są systemy bankowe, systemy rezerwacji kolejowej i lotniczej, monitorowanie rynku akcji oraz inwentaryzacja i kasy w supermarketach.
Brak zarządzania współbieżnym dostępem może powodować problemy takie jak:
- Awarie sprzętu i awarie systemu.
- Jednoczesna realizacja tej samej transakcji, impaslub powolna wydajność.
Kontrolowanie tego współdzielonego dostępu jest zadaniem nadzór konkurencji, który wykorzystuje blokady i znaczniki czasu do bezpiecznego przeplatania transakcji. Wcześniej warto znać stany, przez które przechodzi transakcja.
Stany transakcji
Poniżej wymieniono różne stany koncepcji transakcji w systemie DBMS:
| Miasto | OPIS |
|---|---|
| Stan aktywny | Transakcja przechodzi w stan aktywny w momencie rozpoczęcia procesu wykonywania. W tym stanie można wykonywać operacje odczytu i zapisu. |
| Częściowo zaangażowany | Po zakończeniu transakcji transakcja przechodzi w stan częściowo zatwierdzony. |
| Stan zaangażowany | Gdy transakcja osiągnie stan zatwierdzenia, jej wykonanie zostaje pomyślnie zakończone, a wszystkie zmiany zostają trwale zapisane w bazie danych. |
| Upadły stan | Transakcję uznaje się za nieudaną, jeśli którakolwiek ze sprawdzeń zakończy się niepowodzeniem lub jeśli transakcja zostanie przerwana, gdy jest aktywna. |
| Stan zakończony | Transakcja osiąga stan zakończony, gdy opuszcza system i nie może być wznowiona. |
Zbadajmy diagram przejść stanów który podkreśla, w jaki sposób transakcja przemieszcza się pomiędzy tymi różnymi stanami.
- Po rozpoczęciu wykonywania transakcji staje się ona aktywna. Może wykonać operację ODCZYTU lub ZAPISU.
- Po zakończeniu operacji ODCZYTU i ZAPISU transakcja osiąga stan częściowo zatwierdzony.
- Następnie, niektóre protokoły odzyskiwania muszą zagwarantować, że awaria systemu nie spowoduje trwałego braku możliwości zapisania zmian w transakcji. Jeśli to sprawdzenie zakończy się pomyślnie, transakcja zostanie zatwierdzona i przejdzie w stan zatwierdzenia.
- Jeżeli sprawdzenie się nie powiedzie, transakcja przechodzi w stan niepowodzenia.
- Jeśli transakcja zostanie przerwana w stanie aktywnym, przejdzie w stan niepowodzenia. Należy wycofać transakcję, aby cofnąć efekt operacji zapisu w bazie danych.
- Stan zakończony oznacza, że transakcja opuszcza system.
Czym są właściwości ACID?
Właściwości kwasu służą do utrzymania integralności bazy danych podczas przetwarzania transakcji. ACID w systemie DBMS oznacza Atomiczność, Cciągłość, Isolacja i Dtrwałość.
- AtomLodowość: Transakcja jest pojedynczą jednostką operacji. Albo wykonujesz ją w całości, albo wcale. Nie może być częściowego wykonania.
- Konsystencja: Po wykonaniu transakcji powinna ona przejść z jednego spójnego stanu do drugiego.
- Izolacja: Transakcja powinna być wykonywana w izolacji od innych transakcji. Podczas wykonywania współbieżnego, wyniki pośrednie z jednocześnie wykonywanych transakcji nie powinny być udostępniane sobie nawzajem.
- Trwałość: Po pomyślnym zakończeniu transakcji zmiany w bazie danych powinny zostać zapisane nawet w przypadku awarii systemu.
Właściwość ACID w systemie DBMS z przykładem
Poniżej znajduje się przykład właściwości ACID w systemie DBMS:
Transaction 1: Begin X=X+50, Y = Y-50 END Transaction 2: Begin X=1.1*X, Y=1.1*Y END
Transakcja 1 polega na przeniesieniu 50 USD z konta X na konto Y.
Transakcja 2 polega na zasileniu każdego rachunku odsetkami w wysokości 10%.
Jeśli obie transakcje zostaną przesłane jednocześnie, nie ma gwarancji, że Transakcja 1 zostanie wykonana przed Transakcją 2 i odwrotnie. Niezależnie od kolejności, wynik musi być taki, jakby transakcje następowały kolejno, jedna po drugiej.
Rodzaje transakcji
Na podstawie obszarów zastosowań:
- Nierozproszone i rozproszone.
- Transakcje kompensacyjne.
- Czas transakcji.
- Online czy wsadowo.
Na podstawie działań:
- Two-step.
- Ograniczony.
- Model działania.
Na podstawie struktury:
- Transakcje płaskie lub proste: składają się z sekwencji operacji pierwotnych wykonywanych pomiędzy operacją początkową i końcową.
- Transakcje zagnieżdżone: transakcja zawierająca inne transakcje.
- Przepływ pracy.
Co to jest harmonogram?
Harmonogram to proces tworzenia pojedynczej grupy wielu równoległych transakcji i wykonywania ich jedna po drugiej. Powinien on zachowywać kolejność, w jakiej instrukcje pojawiają się w każdej transakcji. Jeśli dwie transakcje są wykonywane jednocześnie, wynik jednej transakcji może wpłynąć na wynik drugiej.
Przykład
Initial Product Quantity is 10 Transaction 1: Update Product Quantity to 50 Transaction 2: Read Product Quantity
Jeżeli Transakcja 2 zostanie wykonana przed Transakcją 1, odczytana zostanie nieaktualna informacja o ilości towaru. Dlatego potrzebne są harmonogramy.
Wykonywanie równoległe w bazie danych jest nieuniknione. Jest ono jednak dozwolone, gdy istnieje relacja równoważności między jednocześnie wykonywanymi transakcjami. Ta równoważność może mieć trzy rodzaje.
Równoważność wyników: Jeśli dwa harmonogramy wyświetlają ten sam wynik po wykonaniu, nazywa się to harmonogramem o równoważnych wynikach. Mogą one oferować ten sam wynik dla niektórych wartości i różne wyniki dla innego zestawu wartości. Na przykład, jedna transakcja aktualizuje ilość produktu, a inna dane klienta.
Zobacz równoważność: Równoważność widoków występuje, gdy transakcje w obu harmonogramach wykonują podobną czynność. Na przykład, jedna transakcja wstawia szczegóły produktu do tabeli produktów, a druga do tabeli archiwum. Transakcja jest taka sama, ale tabele są różne.
Równoważność konfliktu: W tym przypadku dwie transakcje aktualizują lub wyświetlają ten sam zestaw danych. Występuje konflikt między transakcjami, ponieważ kolejność wykonywania wpłynie na wynik.
Co to jest serializowalność?
Serializowalność to proces poszukiwania harmonogramu współbieżnego, którego wynik jest równy harmonogramowi szeregowemu, w którym transakcje są wykonywane jedna po drugiej. W zależności od typu harmonogramu istnieją dwa rodzaje serializowalności:
- Serializacja konfliktów.
- Wyświetl możliwość serializacji.
Oba systemy różnią się sposobem, w jaki oceniają równoważność, co podsumowano poniżej.
| WYGLĄD | Serializowalność konfliktów | Wyświetl możliwość serializacji |
|---|---|---|
| Podstawa | Kolejność operacji powodujących konflikt | Relacje odczytu z i ostatecznego zapisu |
| Testowanie | Graf pierwszeństwa musi być acykliczny | Wyświetl równoważność harmonogramu szeregowego |
| Ścisłość | Bardziej rygorystyczny, podzbiór | Szerszy, obejmuje pisma ślepe |
| Koszt sprawdzenia | Wydajny | Obliczeniowo trudne |
Każdy konfliktowy harmonogram serializowalny jest również serializowalny w widoku, ale nie odwrotnie, dlatego też konfliktowy harmonogram serializowalny jest praktycznym testem stosowanym przez system DBMS.

