집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 온라인 사용자 추적 시스템에서 '잠금을 시도할 때 교착 상태 발견' 오류를 방지하려면 어떻게 해야 합니까?
MySQL에서 '잠금을 가져오려고 할 때 발견된 교착 상태' 방지
문제:
개발자는 간헐적으로 '잠금을 시도할 때 교착 상태가 발견되었습니다. 온라인 사용자 활동을 추적하는 InnoDB 테이블에 INSERT를 실행할 때 '트랜잭션 다시 시작' 오류가 발생합니다. 테이블은 페이지 새로 고침 시 업데이트되고 cron 작업에 의해 15분마다 지워집니다.
문제의 쿼리:
해결책:
교착 상태를 해결하려면 트랜잭션에서 키를 일관된 순서로 잠그는 것이 중요합니다. 권장 단계는 다음과 같습니다.
쿼리의 키 순서:
삭제 문 정렬:
DELETE FROM onlineusers WHERE id IN ( SELECT id FROM onlineusers WHERE datetime <= now() - INTERVAL 900 SECOND ORDER BY id ) u;
재시도 메커니즘:
위 내용은 MySQL 온라인 사용자 추적 시스템에서 '잠금을 시도할 때 교착 상태 발견' 오류를 방지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!