Сообщество / Новая тема

Обсуждение статьиПервый комментарий откроет обсуждение — дальше все вопросы по этой статье будут собираться здесь

Об статье:
Как рождается дедлок и по какому принципу база выбирает, кого убить

Приложение падает с ошибкой deadlock detected, хотя ни один запрос по отдельности не завис — просто одна из двух параллельных транзакций внезапно получила отказ и откатилась. Первая реакция — искать баг в коде: где-то забыли COMMIT, где-то бесконечный цикл. На деле это не баг, а штатная работа базы: она обнаружила, что две транзакции никогда не смогут закончиться сами, и принудительно освободила одну из них. Разберём, как возникает такой тупик, как СУБД его ловит и почему один из участников обязан быть принесён в жертву.

Подробнее →