MySQL 고동시성 환경에서 deadlock은 흔한 문제입니다.
원인: 두 개 이상의 트랜잭션이 서로의 락을 기다리면서 교착상태 발생.
해결방법:
1. 트랜잭션 순서 통일 - 모든 트랜잭션에서 같은 순서로 테이블 접근
2. 타임아웃 설정 - innodb_lock_wait_timeout 단축
3. 애플리케이션 재시도 - deadlock 발생 시 자동 재시도
4. 격리 레벨 검토 - READ COMMITTED 사용
5. 인덱스 확인 - 전체 스캔 방지
가장 효과적인 방법은 접근 순서 통일과 재시도 로직입니다.
댓글 없음:
댓글 쓰기