반응형
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
반응형
'MySql' 카테고리의 다른 글
MySQL 원격 데이터베이스에서 localhost outfile로 mysql 덤프 (0) | 2020.10.21 |
---|---|
MySQL List of non-empty tables in MySQL database (0) | 2020.10.21 |
MySQL-쿼리 실행에 허용되는 최대 시간을 제한 할 수 있습니까? (0) | 2020.10.21 |
MySQL에서 FULL OUTER JOIN을 수행하는 방법은 무엇입니까? (0) | 2020.10.21 |
MySQL # 1060-중복 열 이름 'id' (0) | 2020.10.20 |
댓글