Co to jest ofiara impasu?
Ofiarą zakleszczenia jest użytkownik komputera działający jako klient podłączony do serwera, którego połączenie serwer host postanowił zakończyć, aby rozwiązać zakleszczenie. Ten typ impasu często pojawia się, gdy dwa różne procesy próbują wykorzystać te same zasoby, co powoduje zablokowanie obu procesów. Aby rozwiązać ten problem, wiele systemów baz danych serwera może wykryć zakleszczenie, a następnie zdecydować o zakończeniu połączenia jednego z dwóch procesów. Program może wybrać dowolną ofiarę zakleszczenia, chociaż użytkownik jest zwykle wybierany jako ten, który może najłatwiej ponownie połączyć się z systemem.
Termin „ofiara zakleszczenia” jest zwykle używany w komunikacie o błędzie lub wyjątku wyświetlanym użytkownikowi przez system po zakończeniu jego lub jej połączenia. Ten błąd występuje w sytuacji powszechnie nazywanej impasem. Zasadniczo impas występuje, gdy dwóch użytkowników podłączonych do serwera próbuje uzyskać dostęp do tych samych zasobów w sposób, który tworzy blokadę w systemie. Na przykład, jeśli użytkownik A korzysta z zasobu 1 i musi również korzystać z zasobu 2, podczas gdy użytkownik B korzysta z zasobu 2 i musi również korzystać z zasobu 1, występuje impas, ponieważ żaden użytkownik nie może zakończyć swojego procesu.
W tym przykładzie jeden z dwóch użytkowników zostałby wybrany przez system jako ofiara impasu, a jego połączenie z serwerem zostanie przerwane. Gdy to nastąpi, drugi użytkownik może zakończyć proces, kończąc impas, a ofiara impasu może ponownie połączyć się z serwerem. Większość programów bazodanowych serwerów jest zaprojektowana z wykrywaniem zakleszczenia, które zazwyczaj wykrywa zakleszczenie po pewnym czasie. Mimo że impas niekoniecznie jest poważnym problemem, może być uciążliwy dla użytkowników, zwłaszcza tych wybranych jako ofiara impasu i wskazuje na jeden lub więcej błędów w programowaniu baz danych serwera.
Sposób, w jaki serwer wybiera ofiarę impasu, może być różny. Niektóre programy wybierają ofiarę na zasadzie przypadkowej. Chociaż może to być dość skuteczne, ponieważ każdy wybór prowadzi do rozwiązania i końca impasu, nie zawsze jest to idealna metoda. Serwer jest zwykle programowany w celu oceny dwóch użytkowników, którzy wybiorą tego, który może najłatwiej połączyć się ponownie lub kto straci najmniejszą ilość danych z powodu rozłączenia.