온라인 사용자를 기록하는 innoDB 테이블이 있습니다. 사용자가 페이지를 새로 고칠 때마다 업데이트되어 사이트의 페이지 및 사이트에 대한 마지막 액세스 날짜를 추적합니다. 그런 다음 오래된 레코드를 삭제하기 위해 매 15 분마다 실행되는 cron이 있습니다.mysql을 피하는 방법 '잠금을 얻으려고 할 때 교착 상태가 발견되었습니다. 트랜잭션을 다시 시도하십시오 '
잠금을 얻으려고 할 때 '교착 상태가 발견되었습니다. 지난 밤에 약 5 분 동안 '트랜잭션 재시작 시도'를 실행하면이 테이블에 INSERT를 실행하는 것처럼 보입니다. 누군가이 오류를 방지하는 방법을 제안 할 수 있습니까?
=== 편집 ===
여기실행중인 쿼리 수 있습니다
처음 방문 사이트 :
INSERT INTO onlineusers SET
ip = 123.456.789.123,
datetime = now(),
userid = 321,
page = '/thispage',
area = 'thisarea',
type = 3
을 각 페이지 새로 고침 :
UPDATE onlineusers SET
ips = 123.456.789.123,
datetime = now(),
userid = 321,
page = '/thispage',
area = 'thisarea',
type = 3
WHERE id = 888
크론 매 15 분마다 :
DELETE FROM onlineusers WHERE datetime <= now() - INTERVAL 900 SECOND
그런 다음 몇 가지 통계 로그인 할 몇 가지 계산을 수행합니다 (예 : 온라인 온라인 회원, 방문자).
테이블 구조에 대해 더 자세히 설명해 주시겠습니까? 클러스터형 또는 비 클러스터형 인덱스가 있습니까? –
http://dev.mysql.com/doc/refman/5.1/en/innodb-deadlocks.html - "show engine innodb status"를 실행하면 유용한 진단 정보를 얻을 수 있습니다. – Martin