Sources
Delphi Russian Knowledge Base
DRKB - база знаний по Дельфи в рунете, составленная Виталием Невзоровым

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

01.01.2007

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

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

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

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

Previous page:
БД - хранилище объектов (статья)
Top:
DRKB
Next page:
Пример использования компоненты синхронного просмотра