Нужна помощь тупика пожалуйста - PullRequest
0 голосов
/ 23 октября 2010

У меня особенная ситуация. У меня есть таблицы, к которым постоянно обращаются разные части нашего кода и тысячи клиентов, поэтому мы использовали транзакции при выполнении простых обновлений и вставок в наши таблицы. Проблема в том, что мы продолжаем получать тупиковые ошибки. Кто-нибудь есть идеи, как я могу облегчить эту проблему?

Ответы [ 2 ]

4 голосов
/ 23 октября 2010

тупики могут возникнуть по многим причинам и их комбинациям:

  • Плохой дизайн схемы

  • Неправильные индексы для вашего запроса нагрузка

  • Плохо написанный TSQL

  • Уровни агрессивной изоляции транзакций и / или долгосрочные открытые транзакции

  • Плохие шаблоны доступа к приложениям

  • Низкая спецификация или неправильно настроен аппаратное обеспечение

Все это распространено.

Предлагаю вам прочитать

4 голосов
/ 23 октября 2010

Эта проблема не слишком своеобразна - она ​​типична, когда разработчики мало знают о том, как работает блокировка, и просто думают о транзакциях как о «черных ящиках» и ожидают, что их решения масштабируются.

Митчправильно в комментариях о плате кому-то, кто является экспертом - это проблема, которая слишком велика для любого решения на SO.Вам нужно будет вооружиться следами запросов, вызывающих взаимоблокировки, и вам придется анализировать все, от ваших индексов до дизайна таблицы, до уровней изоляции транзакций, до шаблонов запросов.

Я предлагаю начать с SQL Server Profiler и настроить трассировку, которая будет генерировать график взаимоблокировки.Это, по крайней мере, идентифицирует ваши проблемные запросы и ресурсы, которые находятся в тупике.Настройте другую трассировку для поиска медленных запросов (скажем, 100 мс) и ускорьте их тоже.Чем дольше выполняются ваши запросы, тем выше вероятность конфликта блокировок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...