| Termin | Definicja |
|---|---|
| Zależności transakcyjne | Zależności transakcyjne to powiązania między operacjami wymagające ich spójnego zatwierdzenia lub wycofania. Jak operacje tworzą jedną całośćZależności transakcyjne opisują sytuacje, w których kilka operacji na danych musi być traktowanych jako jeden logiczny proces. Przykładem jest przelew: zmniejszenie salda rachunku nadawcy i zwiększenie salda rachunku odbiorcy powinny zostać zatwierdzone razem. Jeżeli pierwsza zmiana zostanie zapisana, a druga nie, dane przestaną przedstawiać rzeczywisty stan systemu. Transakcja grupuje więc powiązane instrukcje i określa, że wynik ma być zaakceptowany w całości albo anulowany w całości. W relacyjnych bazach danych transakcja może obejmować operacje Spójność między tabelami i rekordamiZależności transakcyjne są szczególnie istotne wtedy, gdy jedna operacja modyfikuje wiele tabel albo wiele rekordów. Utworzenie zamówienia może wymagać dodania nagłówka zamówienia, pozycji towarowych oraz zmniejszenia stanu magazynowego. Te elementy są powiązane kluczami i ograniczeniami integralności, dlatego częściowe zapisanie procesu może prowadzić do osieroconych pozycji, ujemnego stanu magazynu albo zamówienia bez szczegółów. Transakcja pozwala utrzymać zgodność tych zmian w ramach jednego zatwierdzenia. Mechanizm ten wiąże się z właściwościami ACID: atomowością, spójnością, izolacją i trwałością. Atomowość oznacza nierozdzielność grupy operacji. Spójność wymaga, aby po zatwierdzeniu były spełnione reguły bazy, takie jak klucze obce, unikalność i ograniczenia wartości. Izolacja określa, w jakim stopniu równoległe transakcje widzą wzajemnie swoje niezatwierdzone lub zatwierdzone zmiany. Trwałość oznacza zachowanie zatwierdzonych danych po zakończeniu operacji, choć sposób realizacji zależy od konfiguracji silnika, systemu plików i nośnika. Blokady, kolejność i wycofywanie zmianGdy kilka transakcji jednocześnie korzysta z tych samych danych, silnik bazy musi kontrolować ich wzajemne oddziaływanie. Stosowane mechanizmy mogą obejmować blokady, kontrolę wersji rekordów albo inne modele izolacji. Zbyt długo otwarta transakcja może utrzymywać blokady, ograniczać dostęp innych operacji i powodować wzrost liczby oczekujących zapytań. Z kolei zbyt niski poziom izolacji może dopuścić do odczytu danych niezatwierdzonych, powtórnego odczytu z innym wynikiem lub pojawienia się dodatkowych wierszy spełniających to samo zapytanie. Nieprawidłowa kolejność modyfikowania zasobów może prowadzić do zakleszczenia. Przykładowo jedna transakcja może zablokować rekord A i czekać na rekord B, podczas gdy druga zablokowała rekord B i czeka na rekord A. Silnik zwykle wykrywa taki cykl i przerywa jedną z transakcji, aby druga mogła zakończyć pracę. Aplikacja powinna obsłużyć taki błąd, ponownie wykonać całą transakcję, a nie tylko jej ostatnią instrukcję, oraz stosować krótkie transakcje i jednolitą kolejność dostępu do danych. Objawy niespójności i postępowanie serwisoweProblemy z zależnościami transakcyjnymi mogą objawiać się rozbieżnymi wartościami w aplikacji, brakującymi rekordami powiązanymi, wielokrotnym naliczeniem tej samej operacji albo komunikatami o blokadach i przekroczeniu czasu oczekiwania. Sama powolność programu nie przesądza jednak o błędzie transakcji. Podczas analizy trzeba sprawdzić logi aplikacji, identyfikatory żądań, czas rozpoczęcia i zakończenia operacji, treść błędu oraz to, czy po awarii wykonano wycofanie lub ponowienie. Pomocne jest także porównanie liczby rekordów przed i po operacji oraz sprawdzenie, czy proces nie pozostawia otwartych połączeń. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów i komputerów PC oraz ich podzespołów, dlatego przy problemach z aplikacją bazodanową może rozpocząć diagnostykę od sprawdzenia sprzętu, systemu operacyjnego, połączenia sieciowego, pamięci masowej i komunikatów dostępnych na komputerze użytkownika. W przypadku zależności transakcyjnych właściwa naprawa wymaga jednak również weryfikacji konfiguracji oraz kodu aplikacji odpowiedzialnego za zatwierdzanie, wycofywanie i ponawianie operacji. Bez tych danych wymiana podzespołu nie potwierdzi przyczyny niespójności. |