2010-01-20 6 views
4

입니다. Lock wait timeout exceeded; try restarting transaction 오류가 있습니다. 이 문제의 원인과 문제를 해결하는 방법은 무엇입니까? FYI : innodb_lock_wait_timeout = 100은 MySQL 설정 파일에 있습니다.MySQL 잠금 대기 시간 초과가

답변

6

이 문제는입니다.이 잠금은 결국 잠금 장치 중 하나에서 시간 초과가 발생합니다. 여기에 몇 가지 제안은 다음과 같습니다

  • 당신이 행 수준 잠금하지 테이블 수준 잠금이 발생할 올바른 인덱스가 있는지 확인합니다. 이것은 경합을 줄입니다.
  • 외래 키 제약 조건에 대한 색인이 있는지 확인하십시오. insert 또는 update 동안 관계형 제약 조건을 검사하려면 해당 인덱스가없는 경우 일부 데이터베이스는 참조 된 테이블 전체를 잠급니다 (MySQL의 경우인지는 알 수 없음)
  • 문제가 계속 발생하면 트랜잭션을 시도하십시오 빠르거나 작다. 다시 말하지만, 이것은 데이터베이스의 경합을 줄입니다.
  • 제한 시간을 늘리십시오. 그러나 합리적인 값으로 유지하십시오.
0

트랜잭션이 오래 걸리는 긴 트래 피킹 시스템 (예 : 테이블이 오랫동안 잠겨 있음)에서 이러한 현상이 발생합니까? 그렇다면 트랜잭션 코드를 조사하여 트랜잭션 코드를 더 짧게/세밀하게 /보다 효율적으로 만들 수 있습니다.

관련 문제