본문 바로가기
MySql

MySQL에서 innodb_lock_wait_timeout의 높은 값

by 베이스 공부 2020. 10. 21.
반응형

MySQL의 큰 로그 테이블에 대한 통계를 얻으려고합니다. 일부 선택 쿼리는 완료하는 데 너무 오래 걸리고 다음과 같은 예외가 발생합니다.
Caused by: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
이로 인해 전체 애플리케이션이 동일한 오류로 서비스를 중지합니다. 몇 가지 조사 끝에 우리는 MySQL 서버 구성의 'innodb_lock_wait_timeout'변수를 변경하기로 결정했습니다.

그러나이 구성 변경의 단점은 무엇입니까?

 

해결 방법

 

로드가 증가하면 더 긴 시간 제한이 필요합니다. 단점은 다른 클라이언트 쿼리에 대한 최대 쿼리 시간을 늘릴 위험이 있습니다. 이것을 조사해야합니다. Linux 도구 mytop 을 사용하여 장기간 실행되는 쿼리를 찾은 다음 EXPLAIN을 수행하여 잠금이 어떻게 사용되는지 확인하는 것이 좋습니다. 잠금을 줄이기 위해 데이터 및 / 또는 쿼리를 재구성합니다.

마지막으로 MariaDB (MySQL의 포크)는 작업에 필요한 잠금의 양을 줄이는 데 많은 초점을 맞추고 있으므로 이로 이동하는 것도 도움이 될 수 있습니다.

 

참조 페이지 https://stackoverflow.com/questions/4748527

 

 

반응형

댓글