![]() |
#17 |
Moderator
|
От себя хочу добавить - я видел не разрюхиваемые MS SQL дидлоки при неаккуратной работе с номерными сериями. Ну скажем - если у тебя одно и тоже приложение пытается достучаться до numberSequenceTable или numberSequenceList и через специально выделенную сессию - и через общую сессию - последствия будут крайне плачевные.
Скажем: Клиент 1 Сессия 1 читает таблицу inventSum и блокирует ее до конца транзакции Читает таблицу numberSequenceTable и блокирует ее до конца транзакции Сессия пытается читать inventTrans и ждет освобождения ее от блокировки. Клиент 2 Сессия 1 Читает таблицу inventTrans и блокирует ее Сессия 2 Пытается читать таблицу NumberSeqeunceTable - ждет освобождения ее от блокировки. В итоге - клиент1 бесконечно ждет освобождения inventTransа захваченного клиентом2, а клиент2 ждет освобождения numberSequenceTable, захваченного клиентом1. Налицо - классический дидлок, однако MS SQL не в состоянии это дело понять и пресечь - поскольку не осознает что две сессии клиента 2 связаны друг с другом и ожидают освобождения блокировок вместе. |
|