Превышено время ожидания блокировки Mysql при запросе на обновление

В базе данных производственного сервера процедура запускается планировщиком ежедневно, в этой Процедуре у меня есть несколько операторов удаления и обновления.

но это вызывает ошибку превышения времени ожидания блокировки, превышенную иногда при 1 обновлении, которое использует некоторые часто используемые таблицы.

Первоначально innodb_lock_wait_timeout составлял 50 секунд, затем я изменил его на 100, поэтому проблема была решена в течение некоторого времени, но затем снова возникла ошибка, поэтому я изменил ее на 120, снова она была решена временно. Теперь я установил 150 секунд для глобального и установил 200 в сеансе (в процедуре). это работает отлично от нескольких дней.

Но эта процедура очень важна, получение ошибки создает проблемы, поскольку в ней есть очень важные данные.

так есть ли другое решение, которое может быть постоянным решением этой проблемы?

Я новичок, пожалуйста, помогите.

PS Mysql - 5,6 128 ГБ ОЗУ. используя Hibernate, который имеет постоянный пул соединений.

1 ответ

Сделайте следующее в my.cnf и перезапустите mysql

[mysqld]
innodb_lock_wait_timeout=10000

или же

 SET GLOBAL innodb_lock_wait_timeout = 10000;

Вы также можете сделать это временным таймаутом для триггера, добавив ниже к своему триггеру:

SET innodb_lock_wait_timeout = 10000; 
Другие вопросы по тегам