Относительно блокировок БД и эскалации блокировок SQL Server 2008 - PullRequest
1 голос
/ 11 марта 2010

Я видел много статей и Вопросов / Ответов относительно Эскалации блокировок, но следующие вещи все еще расплывчаты. Пожалуйста, ответьте на конкретную необходимую информацию.

  1. Если эскалация блокировок отключена, будут ли намеренные блокировки на более высоких ресурсах, таких как на странице или в таблице ???

  2. Если на странице установлена ​​блокировка (IX), может ли другое соединение получить блокировку (S) или блокировку (X) в строке на этой странице.

  3. Действует ли намеренная блокировка так же, как общая блокировка, т. Е. Если блокировка (IX) или блокировка (IS) помещены в таблицу, мы не можем вставить новую строку в таблицу.

Пожалуйста, помогите мне понять вышеприведенные сценарии, а также я хотел бы сказать вам, что в моем приложении не более 2 или 3 блокировок в одной таблице от одного соединения, но мое приложение является многопоточным и может получить более 20 соединений. одновременно я должен отключить эскалацию блокировки ??? особенно если ответ на вопрос 1 «НЕТ».

Спасибо и С уважением

1 Ответ

2 голосов
/ 11 марта 2010

Чтобы начать с конца - и извините, 20 или более одновременных подключений ничего не значат с точки зрения нагрузки - вы должны ТОЛЬКО отключить эскалацию блокировки, если вам это нужно. то есть, после определения вашей проблемы это решается. Так просто. Все остальное - это чрезмерная оптимизация - и борьба с интеллектом в SQL Server, который довольно неплохо справляется.

1: я не знаю, за редкими редкими случаями.

2: насколько мне известно, не задокументировано. Любой ответ может измениться с исправлением.

3: Преднамеренные замки - это в основном подготовка. Они прекращают выделять замки, которые не позволят их намерению материализоваться. Тем не менее, если ваша таблица минимальна ... вы редко будете видеть блокировку на уровне таблицы.

У вас есть конкретный сценарий для ваших вопросов? По сути - это кажется, и извините, если это не так, как начинающий, боящийся, что вся блокировка делает с его приложением, даже не задумываясь о том, как на самом деле работает сервер SQL. В общем, замки случаются так, как они тебе нравятся. Иногда отсутствие блокировки имеет смысл, обычно имеет смысл использовать уровень изоляции транзакций riht, и обычно вы полностью игнорируете детали блокировки, потому что они не имеют значения. ЕДИНСТВЕННАЯ ситуация, в которой вы столкнетесь с проблемами, - это взаимоблокировки, которые исправляются путем изменения порядка доступа.

Кроме того, блокировки просто работают, и вы доверяете SQL Server, чтобы он работал правильно.

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