Помимо статьи о взаимоблокировке , упомянутой @JohnB, есть документация о взаимоблокировках и способах их обработки .
Часто тупик является результатомусловие состязания между различными транзакциями, поэтому ваш код может просто повторить транзакции, получившие DeadlockDetectedException
.См. Документацию, приведенную выше, для примера цикла повторения. Вам также следует рассмотреть возможность того, чтобы каждая транзакция немного рандомизировала интервалы повторения, чтобы минимизировать вероятность того, что несколько транзакций будут повторяться примерно в одно и то же время.