Co to jest ofiara impasu?

Ofiarą zakleszczenia jest użytkownik komputera, działający jako klient podłączony do serwera, którego połączenie host serwera postanowił zakończyć w celu rozwiązania zakleszczenia. Ten rodzaj zakleszczenia 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 serwerów może wykryć wystąpienie zakleszczenia, a następnie zdecydować się na zakończenie połączenia jednego z dwóch procesów. Ofiara zakleszczenia może zostać wybrana arbitralnie przez program, chociaż użytkownik jest zazwyczaj wybierany jako ten, który najłatwiej może ponownie połączyć się z systemem.

Termin „ofiara zakleszczenia” jest zwykle używany w komunikacie o błędzie lub wyjątku wyświetlanym przez system użytkownikowi po zerwaniu połączenia. Ten błąd występuje w sytuacji powszechnie nazywanej zakleszczeniem. Ogólnie rzecz biorąc, zakleszczenie 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ż użyć zasobu 2, podczas gdy użytkownik B korzysta z zasobu 2 i musi również użyć zasobu 1, występuje zakleszczenie, 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 zakleszczenia, a jego połączenie z serwerem zostałoby przerwane. Gdy to nastąpi, inny użytkownik może zakończyć swój proces, kończąc zakleszczenie, a ofiara zakleszczenia może ponownie połączyć się z serwerem. Większość programów serwerowych baz danych jest zaprojektowana z funkcją wykrywania zakleszczeń, która zazwyczaj wykrywa zakleszczenie po określonym czasie. Nawet jeśli zakleszczenie niekoniecznie jest poważnym problemem, może być uciążliwe dla użytkowników, zwłaszcza tych wybranych jako ofiara zakleszczenia, i wskazuje na jeden lub więcej błędów w programowaniu bazy danych serwera.

Sposób, w jaki serwer wybiera ofiarę impasu, może się różnić. Niektóre programy wybierają ofiarę w sposób czysto losowy. Chociaż może to być dość skuteczne, ponieważ każdy wybór prowadzi do rozwiązania i zakończenia impasu, nie zawsze jest to metoda idealna. Serwer jest zwykle zaprogramowany do oceny dwóch użytkowników, aby wybrać tego, który najłatwiej będzie się ponownie połączyć lub który straci najmniej danych z powodu rozłączenia.