Почему возникает deadlock?

Материал из DRKB

Почему возникает deadlock?[править | править код]

Перекрестная блокировка (deadlock) двух транзакций возникает при изменении одних и тех же записей в разном порядке.

Последовательность действий, приводящая к перекрестной блокировке:

  1. Транзакция A изменяет запись X. Заблокирована X.
  2. Транзакция B изменяет запись Y. Заблокирована Y.
  3. Транзакция A пытается изменить запись Y. Остановлена A.
  4. Транзакция B пытается изменить запись X. Остановлена B.

Сервер определяет перекрестную блокировку и откатывает одну из транзакций, возвращая ошибку соответствующему соединению.

Аминь.

Чтобы не выводить ошибку пользователю, обломанное соединение должно молча повторить транзакцию.


Source: http://delphiworld.narod.ru/
ID: 02430