Zakleszczenie oznacza, że każdy wątek próbuje zaktualizować wiele wierszy w jednej transakcji i że te aktualizacje są wykonywane w innej kolejności w różnych wątkach. Najprostszą możliwą odpowiedzią byłoby zatem zmodyfikowanie kodu tak, aby komunikaty w ramach tej samej transakcji były stosowane w określonej kolejności (tj. w kolejności klucza podstawowego). Zapewniłoby to, że nigdy nie dostaniesz impasu, chociaż nadal będziesz otrzymywać blokady blokujące, gdy jeden wątek czeka na zatwierdzenie transakcji przez inny wątek.
Jednak cofając się o krok, wydaje się mało prawdopodobne, że naprawdę chcesz, aby wiele wątków aktualizowało ten sam wiersz w tabeli, gdy nie możesz przewidzieć kolejności aktualizacji. Wydaje się bardzo prawdopodobne, że doprowadziłoby to do wielu utraconych aktualizacji i dość nieprzewidywalnych zachowań. Co konkretnie robi twoja aplikacja, aby uczynić tego typu rzeczy sensownymi? Czy robisz coś w rodzaju aktualizacji tabel zbiorczych po wstawieniu wierszy do tabeli szczegółów (tj. aktualizujesz liczbę wyświetleń posta oprócz rejestrowania informacji o konkretnym widoku)? Jeśli tak, czy te operacje naprawdę muszą być synchroniczne? A może możesz okresowo aktualizować liczbę wyświetleń w innym wątku, agregując wyświetlenia z ostatnich N sekund?