Как вы боретесь с взаимоблокировками в экземпляре базы данных SQL Server, к которому обращается NHibernate? - PullRequest
4 голосов
/ 24 января 2012

Я работаю над базой данных, которая находится в тупике.Мы разрабатываем базу данных с использованием NHibernate.Каковы некоторые из распространенных подходов к устранению взаимоблокировок, которые мы наблюдаем за конкретными таблицами?

1 Ответ

2 голосов
/ 10 февраля 2012

Лучшее решение - использовать хранимые процедуры для контроля доступа к данным, чтобы вы могли напрямую писать код TSQL. nHibernate может просто выполнять вызовы хранимых процедур.

Однако, так как это решение почти никогда не летает, вы можете попробовать лечить симптомы. Во-первых, убедитесь, что у вас есть хорошие индексы для таблиц, чтобы запросы, выполняемые из nHibernate, работали так хорошо, как могли. Во-вторых, если вы работаете с SQL SErver 2008+, используйте изоляцию моментального снимка для чтения. Это будет иметь огромное значение в блокировке и блокировке, которые вы видите, оба из которых приводят к взаимоблокировкам.

В примечании для стороны установите сервер как оптимизированный для специальной рабочей нагрузки. Это в корне поможет управлению памятью и кешем процедур.

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