Здравствуйте.
Есть у меня на сервере обработчики запросов от клиентов. Просиходит примерно так:
Запрос
{
НачалоТранзакции (IsolationLevel=Snapshot)
{
try
{
repo.UserRepo.ChangeSomething(..);
repo.ShipRepo.ChangeSomething(..);
repo.BuildingRepo.ChangeSomething(..);
...
SaveChanges();
Commit();
}
catch
{
Rollback();
!!! Если произошла взаимоблокировка в транзакции, то повторить транзакцию заново
}
}
}
В итоге если взаимоблокировка произошла, то эта транзакция откатывается и пробует ещё раз.
Пока всё нормально работает. Иногда случаются взаимоблокировки. Но чем больше становится запросов от пользователей, тем больше взаимоблокировок (=тормоза)
Есть ли решения? Изучал разные способы, но не знаю как применить в моём случае.