>데이터 베이스 >MySQL 튜토리얼 >MySQL에서 '테이블 메타데이터 잠금 대기 중' 상태를 유발하는 트랜잭션을 식별하는 방법은 무엇입니까?

MySQL에서 '테이블 메타데이터 잠금 대기 중' 상태를 유발하는 트랜잭션을 식별하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-31 02:12:30221검색

How to Identify Which Transaction is Causing the “Waiting for Table Metadata Lock” State in MySQL?

"테이블 메타데이터 잠금 대기 중" 상태를 유발하는 트랜잭션 식별

MySQL 버전 5.5.24의 테이블에 대해 DDL 작업을 시도했지만 오류가 발생하는 경우 "테이블 메타데이터 잠금을 기다리는 중" 메시지가 나타나면 이 잠금을 담당하는 트랜잭션을 결정하는 것이 중요합니다.

해결책

MySQL 버전 5.7.3 이하의 경우 :

다음 명령을 실행하여 상태에 대한 자세한 정보를 검색합니다.

SHOW ENGINE INNODB STATUS \G

"TRANSACTIONS" 섹션을 찾아 아직 닫히지 않은 진행 중인 트랜잭션을 식별합니다.

모든 MySQL 버전:

INFORMATION_SCHEMA 테이블에서 정보 검색:

모든 대기 잠금:

USE INFORMATION_SCHEMA;
SELECT * FROM INNODB_LOCK_WAITS;

트랜잭션 차단:

SELECT * FROM INNODB_LOCKS WHERE LOCK_TRX_ID IN (SELECT BLOCKING_TRX_ID FROM INNODB_LOCK_WAITS);

또는

SELECT INNODB_LOCKS.* FROM INNODB_LOCKS JOIN INNODB_LOCK_WAITS ON (INNODB_LOCKS.LOCK_TRX_ID = INNODB_LOCK_WAITS.BLOCKING_TRX_ID);

특정 테이블 잠금:

SELECT * FROM INNODB_LOCKS WHERE LOCK_TABLE = db_name.table_name;

대기 중인 트랜잭션:

SELECT TRX_ID, TRX_REQUESTED_LOCK_ID, TRX_MYSQL_THREAD_ID, TRX_QUERY FROM INNODB_TRX WHERE TRX_STATE = 'LOCK WAIT';

자세한 내용은 MySQL 문제 해결: 쿼리가 작동하지 않을 때 수행할 작업, 6장, 96페이지를 참조하세요. .

위 내용은 MySQL에서 '테이블 메타데이터 잠금 대기 중' 상태를 유발하는 트랜잭션을 식별하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.