Как отладить превышение времени ожидания блокировки на MySQL? - PullRequest
245 голосов
/ 14 мая 2011

В моих производственных журналах ошибок я иногда вижу:

SQLSTATE [HY000]: общая ошибка: 1205 Превышено время ожидания блокировки;попробуйте перезапустить транзакцию

Я знаю, какой запрос пытается получить доступ к базе данных в данный момент, но есть ли способ узнать, какой запрос был заблокирован в тот момент?

Ответы [ 11 ]

0 голосов
/ 14 декабря 2016

Активируйте MySQL general.log (интенсивная работа с диском) и используйте mysql_analyse_general_log.pl для извлечения длительных транзакций, например с:

- min-duration = ваше значение innodb_lock_wait_timeout

После этого отключите general.log.

...