Глосарій

Дедлок (Deadlock)

Дедлок — ситуація в БД або багатопотоковому коді, коли два процеси чекають один на одного і жоден не може продовжити роботу. Транзакція A заблокувала ресурс 1 і чекає ресурс 2, транзакція B — навпаки.

Як виникає

Класичний приклад: переказ грошей. Транзакція A блокує рахунок 1, потім намагається заблокувати рахунок 2. Транзакція B заблокувала рахунок 2 і чекає рахунок 1. Обидві чекають вічно.

Як СУБД вирішує

MySQL та інші СУБД автоматично виявляють дедлок і «вбивають» одну з транзакцій (з меншим обсягом змін). Ця транзакція завершується помилкою і повинна бути перезапущена додатком.

Профілактика