Показать сообщение отдельно
Старый 08.06.2005, 13:16   #16  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,913 / 5736 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
От себя хочу добавить - я видел не разрюхиваемые MS SQL дидлоки при неаккуратной работе с номерными сериями. Ну скажем - если у тебя одно и тоже приложение пытается достучаться до numberSequenceTable или numberSequenceList и через специально выделенную сессию - и через общую сессию - последствия будут крайне плачевные.

Скажем:

Клиент 1
Сессия 1
читает таблицу inventSum и блокирует ее до конца транзакции
Читает таблицу numberSequenceTable и блокирует ее до конца транзакции
Сессия пытается читать inventTrans и ждет освобождения ее от блокировки.

Клиент 2
Сессия 1
Читает таблицу inventTrans и блокирует ее
Сессия 2
Пытается читать таблицу NumberSeqeunceTable - ждет освобождения ее от блокировки.

В итоге - клиент1 бесконечно ждет освобождения inventTransа захваченного клиентом2, а клиент2 ждет освобождения numberSequenceTable, захваченного клиентом1.

Налицо - классический дидлок, однако MS SQL не в состоянии это дело понять и пресечь - поскольку не осознает что две сессии клиента 2 связаны друг с другом и ожидают освобождения блокировок вместе.