mysql deadlocks & lock wait timeouts -- что означают. Блокировки и транзакции
Primary tabs
Forums:
Речь идёт о двух ситуациях, которые приводят к откату транзакции в MYSQL:
- deadlock Мертвая блокировка -- Ситуация, где дело не во времени, а в связях между транзакциями и заблокированными ими сущностями.
В качестве примера можно привести взаимную блокировку.
Взаимная блокировка: ситуация, когда например, 1-ой транзакции нужна скажем сторка A какой-то таблицы, но она уже заблокирована 2-торой транзакцией, а этой второй транзакции нужна строка B какой-то таблицы, но она заблокирована первой. В этой ситуации единственный выход -- откатить одну из конфликтующих транзакций. (Эту ситуацию необходимо отследить на уровне приложения и запустить одну из транзакций заново -- ту, что откатилась).
Также возможна блокировка с выстраиванием транзакций в очередь на одном и то же ресурсе.
- lock wait timeout Окончание ожидания разблокирования -- например какой--то медленный запрос заблокировал ресурс (например, строку в таблицы или их группу) и другие транзации отваливаются по таймауту
- Log in to post comments
- 3392 reads