| Termin | Definicja |
|---|---|
| Monitorowanie transakcji | Monitorowanie transakcji to śledzenie długo otwartych operacji, które blokują zasoby i uniemożliwiają obcięcie dziennika. Monitorowanie transakcji jako obserwacja stanu bazy danychMonitorowanie transakcji polega na sprawdzaniu, które operacje rozpoczęły się, ale nie zostały jeszcze zakończone zatwierdzeniem lub wycofaniem. Transakcja utrzymuje logiczną spójność wykonywanych zmian: kolejne instrukcje są traktowane jako jeden zestaw operacji, który powinien zakończyć się poleceniem zatwierdzającym albo anulującym. Jeżeli aplikacja otworzy transakcję i przestanie wykonywać dalsze działania, baza danych może przez długi czas przechowywać jej stan jako aktywny. Podczas monitorowania analizuje się między innymi identyfikator transakcji, czas jej rozpoczęcia, aktualny stan, sesję lub proces, który ją utworzył, oraz zasoby pozostające pod jej wpływem. Istotne jest także rozróżnienie między transakcją aktywnie wykonującą instrukcję a transakcją bezczynnie oczekującą na decyzję aplikacji. W drugim przypadku połączenie z bazą może nadal utrzymywać blokady albo uczestniczyć w mechanizmie kontroli wersji danych, mimo że chwilowo nie wykonuje zapytań. Długo otwarta transakcja a dziennik operacjiDziennik transakcyjny zapisuje informacje potrzebne do odtworzenia zmian po awarii oraz do wycofania operacji, które nie zostały zatwierdzone. Możliwość obcięcia lub ponownego wykorzystania wcześniejszej części dziennika zależy od tego, czy system nadal potrzebuje zapisanych w niej informacji. Długo otwarta transakcja może utrzymywać najstarszy wymagany punkt dziennika, ponieważ baza musi zachować dane potrzebne do obsługi jej zatwierdzenia, wycofania albo odczytu spójnego obrazu. Skutkiem takiego stanu jest narastanie rozmiaru dziennika, nawet gdy bieżąca liczba nowych operacji nie wydaje się duża. Samo powiększenie pliku dziennika nie usuwa przyczyny problemu. Jeżeli transakcja nadal pozostaje otwarta, kolejne fragmenty dziennika mogą także nie nadawać się do ponownego użycia. W zależności od konfiguracji i silnika bazy danych może to prowadzić do zajęcia dostępnego miejsca, błędów zapisu, spowolnienia operacji oraz zatrzymania procesów zależnych od tej samej bazy. Blokady, oczekiwania i ślad połączeniaMonitorowanie transakcji powinno obejmować również blokady oraz oczekiwania na zasoby. Transakcja modyfikująca rekordy może uniemożliwić innym sesjom wykonanie operacji na tych samych danych albo ograniczyć ich dostęp do zakresu objętego blokadą. W praktyce ważne jest ustalenie relacji między sesją blokującą a sesjami oczekującymi: sama informacja, że zapytanie działa długo, nie wyjaśnia jeszcze, czy przyczyną jest duży zakres pracy, brak indeksu, oczekiwanie na blokadę, błąd aplikacji czy problem z zasobami systemowymi. Do analizy wykorzystuje się bieżące widoki diagnostyczne, informacje o sesjach, historię zapytań oraz metryki dziennika. Należy porównać czas rozpoczęcia transakcji z czasem ostatniej aktywności, rozmiarem generowanego dziennika i listą oczekujących procesów. Przydatne jest także sprawdzenie, czy połączenie należy do aplikacji, zadania cyklicznego, procesu importu, mechanizmu synchronizacji czy ręcznej sesji administracyjnej. Dzięki temu można odróżnić prawidłową, długo trwającą operację od transakcji pozostawionej otwartej wskutek błędu obsługi połączenia. Bezpieczna reakcja na niezamkniętą operacjęUsuwanie problemu powinno rozpocząć się od ustalenia, dlaczego transakcja nie została zakończona. W kodzie aplikacji sprawdza się ścieżki zatwierdzania i wycofywania zmian, obsługę wyjątków, działanie limitów czasu oraz sposób zwalniania połączeń. W przypadku operacji wykonywanych etapami należy potwierdzić, że każda ścieżka kończy transakcję w sposób zgodny z przeznaczeniem. Przerwanie sesji bez zrozumienia jej roli może spowodować wycofanie poprawnie rozpoczętych zmian, ponowienie pracy przez aplikację albo dodatkowe blokady podczas ponownego uruchamiania zadania. W diagnostyce sprzętu i oprogramowania komputerowego analizuje się także wpływ obciążenia systemu, problemów z dyskiem, utraty połączenia sieciowego oraz błędów procesu aplikacyjnego na stan transakcji. Po zakończeniu uzasadnionej operacji należy ponownie sprawdzić aktywne transakcje, blokady, tempo przyrostu dziennika i możliwość odzyskiwania jego wcześniejszej części. Ocena długo otwartych transakcji wymaga dostępu do właściwego środowiska bazodanowego oraz jego diagnostyki. |