Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 deadlock при update  [new]
rebel25
Member

Откуда:
Сообщений: 98
Пользователи с разным uname выполняют один и тот же update и иногда получают deadlock типа page lock
Скажите, как устранить причину смертельной блокировки? Я могу и переписать код и изменить структуру БД.

update tabel
set
tabel.pl_days2 = 0
where
convert(numeric(19,4),isnull(tabel.pl_days2,0)) = 0
and tabel.uname = 'user1'
and tabel.cmonth = 222;
2 мар 15, 16:47    [17332972]     Ответить | Цитировать Сообщить модератору
 Re: deadlock при update  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
Как насчет индексов ?
Зачем там конвертация ?
Почему where =0 и set=0 ?
Нужно заменить нуллы на нули ?
2 мар 15, 16:53    [17333026]     Ответить | Цитировать Сообщить модератору
 Re: deadlock при update  [new]
;;dllhell;;
Guest
rebel25
Пользователи с разным uname выполняют один и тот же update и иногда получают deadlock типа page lock
Скажите, как устранить причину смертельной блокировки? Я могу и переписать код и изменить структуру БД.

update tabel
set
tabel.pl_days2 = 0
where
convert(numeric(19,4),isnull(tabel.pl_days2,0)) = 0
and tabel.uname = 'user1'
and tabel.cmonth = 222;


скорее всего в при одних usr идет по индексу, при других сканит кластерный или кучу. разный порядок несовместимых блокировок. вот и deadlock,
2 мар 15, 16:56    [17333054]     Ответить | Цитировать Сообщить модератору
 Re: deadlock при update  [new]
ппа
Guest
rebel25,

Deadlock всегда состоит из 2-ух частей. Вы сейчас видите, только умерший запрос. Есть еще запрос, который с ним конфликтовал. Поэтому вам неплохо получить более детальные логи или так называемый deadlock граф, чтобы понять ситуацию более детально. Без deadlock графа (а еще лучше воспроизведения ситуации) тут все будут только гадать.
2 мар 15, 17:29    [17333301]     Ответить | Цитировать Сообщить модератору
 Re: deadlock при update  [new]
rebel25
Member

Откуда:
Сообщений: 98
Единственный смысл этого выражения, который я смог придумать - это превратить нуллы в нули. Только вот зачем конвертация не понятно. Прикладываю запись блокировки.

К сообщению приложен файл (deadlock.xdl - 46Kb) cкачать
3 мар 15, 07:23    [17335248]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить