mysql deadlocks & lock wait timeouts -- что означают. Блокировки и транзакции

Forums:

Речь идёт о двух ситуациях, которые приводят к откату транзакции в MYSQL:

  • deadlock Мертвая блокировка -- Ситуация, где дело не во времени, а в связях между транзакциями и заблокированными ими сущностями.

    В качестве примера можно привести взаимную блокировку.

    Взаимная блокировка: ситуация, когда например, 1-ой транзакции нужна скажем сторка A какой-то таблицы, но она уже заблокирована 2-торой транзакцией, а этой второй транзакции нужна строка B какой-то таблицы, но она заблокирована первой. В этой ситуации единственный выход -- откатить одну из конфликтующих транзакций. (Эту ситуацию необходимо отследить на уровне приложения и запустить одну из транзакций заново -- ту, что откатилась).

    Также возможна блокировка с выстраиванием транзакций в очередь на одном и то же ресурсе.

  • lock wait timeout Окончание ожидания разблокирования -- например какой--то медленный запрос заблокировал ресурс (например, строку в таблицы или их группу) и другие транзации отваливаются по таймауту

Источник:
https://stackoverflow.com/questions/1656...