Transakcja to zbiór operacji (u nas - instrukcji języka SQL), które mogą być wykonane jedynie wszystkie lub żadna.
Nazwa takiego ciągu instrukcji pochodzi od operacji bankowych - przelew musi jednocześnie zabrać z jednego konta i dodać na drugie. W przypadku niepowodzenia żadna z tych operacji nie powinna mieć miejsca. Jeśli zajdzie tylko jedna skutki mogłyby być katastrofalne.
Transakcje opisuje zasada ACID - atomowość (Atomicity), spójność (Consistency), izolacja (Isolation) i trwałość (Durability):
-
Atomowość - transakcja może być albo wykonana w całości albo w całości niewykonana.
-
Spójność - stan bazy danych zawsze przedstawia stan przed lub po transakcji. Zapytania składane systemowi w czasie wykonywania transakcji muszą pokazywać sytuację przez transakcją, nie sytuację przejściową.
-
Izolacja - transakcja dzieje się niezależnie od innych wykonywanych operacji, w tym od innych transakcji.
-
Trwałość - w przypadku awarii systemu bazodanowego, np. w wyniku odcięcia elektryczności, transakcja będzie albo wykonana w całości albo wcale nie wykonana.
Obsługa transakcji jest bardzo ważna w bazach danych.
Systemy plików z journallingiem zmieniają dane systemu plików w sposób transakcyjny. Gwarantuje to że system plików jest stabilny nawet po awarii systemu operacyjnego.
Jednak sam zapis do plików nie jest wykonywany transakcyjnie, było by to zbyt kosztowne rozwiązanie. Istnieją jednak metody transakcyjnego zapisu danych do systemu plików - najprostsza to (na Uniksach):
-
zapisujemy plik tymczasowy w którym znajdują się nowe dane. W przypadku krachu w tej fazie mamy stary plik nienaruszony.
-
kasuje się poprzedni plik. Operacja jest atomowa. W przypadku krachu przed skasowaniem mamy oba pliki, w przypadku krachu po skasowaniu ale przed następną fazą mamy nowe dane, choć w złym pliku (należy je później odzyskać kończąc operacje).
-
zmieniamy nazwę pliku. Operacja jest atomowa. Po tej operacji transakcja została dokończona.
Sposób niekoniecznie działa po NFS.
Źródło: http://gryf.mif.pg.gda.pl/~mate/wyklady/bazy/transakcje.html
Listing
Ranga: Administrator serwisu Punktów: 0