Я пытался решить различные тупики, которые мы видим в производстве. Мы включили отслеживание тупиковой ситуации. Следы показывают много блокировок на КЛЮЧЕВЫХ КЛЮЧАХ как это:
01/15/2010 08:25:07,spid15s,Unknown,keylock hobtid=72057594047758336 dbid=2
objectname=tempdb.dbo.MyTable indexname=IX_MyTable id=lock36977900 mode=X
associatedObjectId=72057594047758336
Насколько я понимаю, блокировка клавиатуры блокирует индекс, чтобы предотвратить вставку, обновление или удаление записей, когда транзакция выполняет свои собственные операции вставки, обновления и удаления.
Я предполагаю, что существуют плохие планы запросов, из-за которых запрашиваются плохие блокировки. Я могу выполнить те же запросы в моей системе разработки и запустить sp_lock для проверки блокировок требуемого запроса, и я вижу некоторые KEYLOCK в списке. Как проверить диапазон ключей, которые блокировал KEYLOCK?