SQL 2008 тупики при простом удалении - PullRequest
0 голосов
/ 17 июля 2009

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

УДАЛИТЬ ИЗ Administration_NET.dbo.tblEvents Где EMSaccountID = 'DELE10A'

Есть идеи?

Ответы [ 5 ]

3 голосов
/ 17 июля 2009

тупик против самого себя или тупик с другим утверждением?

Это может быть простой тупик чтения / записи, основанный на порядке доступа к индексу , см. Мою ссылку для описания. Это вполне вероятно, если EMSaccountID является некластеризованным индексом.

1 голос
/ 19 июля 2009

Никто не может помочь вам без более богатой информации:

В частности, необходимо включить некоторые флаги трассировки, чтобы SQL Server регистрировал причину, по которой он откатил данную транзакцию.

Итак, включите отслеживание тупиковой ситуации:

DBCC TRACEON(1204,1222)    

(Этот параметр исчезнет при циклическом запуске сервера sql, при необходимости его можно указать в параметрах запуска)

Как только этот параметр включен, ваш журнал SQL-сервера будет содержать информацию о цепочке взаимоблокировок, она выглядит примерно так:

2003-05-14 11:46:26.76 spid4     Starting deadlock search 1
2003-05-14 11:46:26.76 spid4     Target Resource Owner:
2003-05-14 11:46:26.76 spid4      ResType:LockOwner Stype:'OR' Mode: S SPID:55 ECID:0 Ec:(0x43CAB580) Value:0x42bdf340
2003-05-14 11:46:26.76 spid4      Node:1       ResType:LockOwner Stype:'OR' Mode: S SPID:55 ECID:0 Ec:(0x43CAB580) Value:0x42bdf340
2003-05-14 11:46:26.76 spid4     
2003-05-14 11:46:26.76 spid4     End deadlock search 1 ... a deadlock was not found.
2003-05-14 11:46:26.76 spid4     ----------------------------------
2003-05-14 11:46:31.76 spid4     ----------------------------------
2003-05-14 11:46:31.76 spid4     Starting deadlock search 2

Вставьте эту информацию в свой вопрос, это важно для диагностики проблемы.

0 голосов
/ 17 июля 2009

У меня глупая идея - возможно, вы установили таблицу Administration_NET.dbo.tblEvents для использования каскадного удаления ... В этом случае операция удаления установит больше блокировок для большего количества таблиц.

0 голосов
/ 17 июля 2009

Сколько разных типов операторов попадают в таблицу tblEvents? Возможно ли, что вы выполняете оператор вставки / обновления / выбора одновременно с вашим удалением? Вы можете попытаться воссоздать проблему, запустив большое количество операций вставки / обновления / выбора одновременно с попытками удаления.

0 голосов
/ 17 июля 2009

пробег:

SET SET SHOWPLAN_ALL ON

а потом твое удаление, есть ли сканирование таблицы? если это так, у вас есть проблема индекса

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