sql блокировка и тайм-аут почти постоянно - PullRequest
1 голос
/ 07 октября 2011

похоже, что сегодня будет еще один мусор.мы недавно обновили наш sql box полным монстром, с множеством ядер и оперативной памяти, однако мы застряли со старой схемой БД, которая является дерьмом, у нашего старого sql box были проблемы, но ничего похожего на то, что мы испытываем с новым, хотяв день развертывания он работал очень быстро, в течение недели это полный беспорядок ...

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

много пидов, кажется, одинаковы для одних и тех же пользователей, которые пытаются несколько раз .. так, например ..

Пользователь: user1 Время: 09:21 Сообщение об ошибке: транзакция (ID процесса 76) был заблокирован при блокировке ресурсов другим процессом и был выбран в качестве жертвы тупика.Повторите транзакцию.

Пользователь: user1 Время: 09:22 Сообщение об ошибке: Транзакция (ID процесса 76) заблокирована на ресурсах блокировки другого процесса и выбрана в качестве жертвы тупика.Повторите транзакцию.

и т. Д., Когда мы переместили базу данных в новую коробку, она была скопирована из старой и восстановлена ​​в новую ...

, если у кого-то есть какие-либо предложения относительночто-то, что мы можем сделать, я куплю им несколько пинт

спасибо

nat

1 Ответ

3 голосов
/ 07 октября 2011

Блокировка не обязательно требует высокой нагрузки. Они, как правило, являются побочным продуктом проблем проектирования с точки зрения того, какие процессы блокируют данные, в каком порядке, на какой срок и т. Д.

В профилировщике SQL есть несколько полезных функций ( 2008 здесь ), которые помогают отслеживать и анализировать взаимоблокировки. Я бы рекомендовал это как лучшую отправную точку. Если вам повезет, вы обнаружите, что есть только один или два виновника, где вы можете легко, например, удалить транзакции или сократить срок их службы, чтобы облегчить ситуацию.

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