> 데이터 베이스 > MySQL 튜토리얼 > 충돌하는 트랜잭션 잠금으로 인해 발생하는 MySQL 교착 상태 오류를 해결하는 방법은 무엇입니까?

충돌하는 트랜잭션 잠금으로 인해 발생하는 MySQL 교착 상태 오류를 해결하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-18 09:37:14
원래의
651명이 탐색했습니다.

How to Resolve MySQL Deadlock Errors Caused by Conflicting Transaction Locks?

MySQL '교착 상태' 오류 해결

동시 트랜잭션이 리소스를 잠그려고 시도할 때 MySQL의 "잠금을 시도할 때 교착 상태 발견" 오류가 발생합니다. 반대 시퀀스. 이 문제를 해결하려면 여러 키를 잠그는 모든 쿼리가 오름차순으로 수행되는지 확인하세요.

귀하의 경우 여러 키를 잠그는 INSERT 및 UPDATE 쿼리에 문제가 있을 수 있습니다. 두 쿼리 모두에 대해 WHERE 절을 오름차순으로 정렬하는 것이 좋습니다.

사이트 첫 방문:

INSERT INTO onlineusers (ip, datetime, userid, page, area, type)
VALUES (123.456.789.123, now(), 321, '/thispage', 'thisarea', 3)
ORDER BY id;
로그인 후 복사

각 페이지 새로 고침:

UPDATE onlineusers (ip, datetime, page, area, type)
SET ip = 123.456.789.123,
    datetime = now(),
    page = '/thispage',
    area = 'thisarea',
    type = 3
WHERE id = 888
ORDER BY id;
로그인 후 복사

추가로 DELETE 쿼리를 다시 작성하여 id:

DELETE FROM onlineusers
WHERE id IN (
    SELECT id
    FROM onlineusers
    WHERE datetime < now() - INTERVAL 900 SECOND
    ORDER BY id
) u;
로그인 후 복사

WHERE 절에 오름차순을 적용하면 모든 트랜잭션이 동일한 순서로 키를 잠그고 교착 상태를 방지할 수 있습니다. 교착 상태 발생 시 잠재적인 재시도를 처리하기 위해 클라이언트 측 재시도 논리를 통합하는 것을 고려해보세요.

위 내용은 충돌하는 트랜잭션 잠금으로 인해 발생하는 MySQL 교착 상태 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿