> 데이터 베이스 > MySQL 튜토리얼 > MySQL에서 '잠금 대기 시간 초과' 오류를 발생시키는 특정 쿼리를 식별하는 방법은 무엇입니까?

MySQL에서 '잠금 대기 시간 초과' 오류를 발생시키는 특정 쿼리를 식별하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-31 06:10:09
원래의
686명이 탐색했습니다.

How to Identify the Specific Query Causing a

MySQL에서 Lock wait timeout 초과 오류가 발생할 때 잠금을 유지한 특정 쿼리를 식별하는 방법

소개:

MySQL의 잠금 대기 시간 초과 오류는 쿼리를 시도하는 동안 잠금 대기 시간 초과가 발생했음을 나타냅니다. 잠긴 리소스에 액세스합니다. 이는 여러 쿼리가 동일한 데이터에 액세스하고 충돌하는 잠금으로 인해 하나의 쿼리가 다른 쿼리의 실행을 차단하는 시나리오에서 발생할 수 있습니다. 잠금 대기를 유발하는 특정 쿼리를 확인하면 문제를 해결하고 향후 발생을 방지하는 데 도움이 될 수 있습니다.

범인 쿼리 식별:

오류 로그에서 " 트랜잭션"은 데이터베이스에 액세스하려는 쿼리가 하나 이상의 InnoDB 테이블을 수정하고 있음을 나타내는 주요 지표입니다. 오류를 발생시킨 쿼리를 알면 관련 테이블을 식별할 수 있습니다.

SHOW ENGINE INNODB STATUSG 명령을 사용하면 영향을 받은 테이블과 잠금 상태에 대한 정보를 얻을 수 있습니다. 이 명령은 다음을 포함한 자세한 정보를 표시합니다.

  • RW 공유 스핀: 공유 읽기 잠금을 기다리는 스핀 수를 지정합니다.
  • RW -excl 스핀: 독점을 기다리는 스핀 수를 나타냅니다. 잠금.
  • 뮤텍스 스핀 대기: 뮤텍스에서 대기 중인 스핀 수.

출력 예:

The SHOW ENGINE INNODB STATUSG의 다음 출력은 특정 쿼리가 단독 잠금을 기다리고 있음을 보여줍니다. 첨부 테이블:

RW-excl spins: 787046, OS waits: 39353
...
Latest foreign key error (a full list is printed in the InnoDB error log when a foreign key error occurs):
...
Transaction:
TRANSACTION 0 606162814, ACTIVE 0 sec, process no 29956, OS thread id 1223895360 updating or deleting, thread declared inside InnoDB 499
mysql tables in use 1, locked 1
...
Foreign key constraint fails for table `backoffice`.`attachment`:

,
  CONSTRAINT `attachment_ibfk_2` FOREIGN KEY (`file_id`) REFERENCES `file` (`file_id`)
Trying to delete or update in parent table, in index `PRIMARY` tuple:
...
But in child table `backoffice`.`attachment`, in index `PRIMARY`, there is a record:
로그인 후 복사

해결 방법:

문제를 해결하려면 트랜잭션의 최대 시간을 지정하는 innodb_lock_wait_timeout 매개변수의 값을 늘릴 수 있습니다. 오류를 보고하기 전에 잠금을 기다리십시오. 이 시간 초과를 늘리면 트랜잭션이 완료되는 데 더 많은 버퍼 시간을 제공하고 잠금 시간 초과 오류 가능성을 줄일 수 있습니다.

innodb_lock_wait_timeout 설정:

  • 시간 초과를 영구적으로 설정하려면 /etc/my.cnf에 다음 줄을 추가하고 다시 시작하세요. MySQL:

    [mysqld]
    innodb_lock_wait_timeout=120
    로그인 후 복사
  • 현재 세션의 시간 초과를 설정하려면 다음 쿼리를 실행합니다.

    SET GLOBAL innodb_lock_wait_timeout = 120;
    로그인 후 복사

위 내용은 MySQL에서 '잠금 대기 시간 초과' 오류를 발생시키는 특정 쿼리를 식별하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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