Почему возникает deadlock?
Материал из DRKB
Почему возникает deadlock?[править | править код]
Перекрестная блокировка (deadlock) двух транзакций возникает при изменении одних и тех же записей в разном порядке.
Последовательность действий, приводящая к перекрестной блокировке:
- Транзакция A изменяет запись X. Заблокирована X.
- Транзакция B изменяет запись Y. Заблокирована Y.
- Транзакция A пытается изменить запись Y. Остановлена A.
- Транзакция B пытается изменить запись X. Остановлена B.
Сервер определяет перекрестную блокировку и откатывает одну из транзакций, возвращая ошибку соответствующему соединению.
Аминь.
Чтобы не выводить ошибку пользователю, обломанное соединение должно молча повторить транзакцию.
Source: http://delphiworld.narod.ru/
ID: 02430