"테이블 메타데이터 잠금 대기 중" 상태를 유발하는 트랜잭션 식별
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!