Тупик помогите нужны пожалуйста
-
25-09-2019 - |
Вопрос
У меня есть особая ситуация. У меня есть таблицы, которые постоянно обращаются к разным частям нашего кода и тысячи клиентов, и поэтому мы использовали использование транзакций при простых обновлениях и вставках на наши таблицы. Проблема заключается в том, что мы продолжаем получать ошибки тупика. У кого-нибудь есть идеи, как я могу облегчить эту проблему?
Решение
Тупики могут возникнуть по многим причинам и их комбинациям:
Бедный дизайн схемы
Неправильные индексы для вашей нагрузки на запрос
Плохо написано TSQL
Агрессивные уровни изоляции транзакций и / или длинные операции
Плохие шаблоны доступа к применению
Низкая спецификация или неправильно настроенное оборудование
Все это распространено.
Я предлагаю вам прочитать
Другие советы
Эта проблема не слишком характерна - это типично, когда разработчики не знают много о том, как блокировка работает, и просто подумать о транзакциях как «черных ящиков» и ожидаю, что их решения масштабируются.
Митч прямо в комментариях о оплате кого-то, кто является экспертом - это проблема, которая слишком велика для любого решения на этом. Вам нужно будет вооружено следами запросов, вызывающих тупики, и вам придется проанализировать все из ваших индексов к вашему дизайну таблицы к вашим уровням изоляции транзакций к вашим узорам запроса.
Я предлагаю начать с SQL Server Profiler и настроить трассировку, которая будет генерировать график тупика. Это, по крайней мере, определит ваши проблемы проблем и ресурсы, которые не заблокированы. Установите еще один след, который в поисках медленных запросов (> Скажем, 100 мс) и скорость их тоже. Чем дольше ваши запросы бегут, тем выше вероятность разрыва блокировки.