어떤 트랜잭션이 "테이블 메타 데이터 잠금 대기 중"상태를 유발하는지 어떻게 알 수 있습니까?


95

테이블에서 일부 DDL을 수행하려고 SHOW PROCESSLIST하는데 "Waiting for table metadata lock"메시지가 나타납니다.

아직 마감되지 않은 거래를 어떻게 알 수 있습니까?

MySQL v5.5.24를 사용하고 있습니다.

답변:


146
SHOW ENGINE INNODB STATUS \G

섹션 찾기-

TRANSACTIONS

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.


17
참조 된 모든 테이블이 INFORMATION_SCHEMA데이터베이스 에 있다는 점에 유의하십시오 .
Michael Mior 2013

9
이 InnoDB 테이블이 실제로 메타 데이터 잠금에 대한 정보를 보유하고 있습니까? 이 블로그 게시물은 다른 것을 제안합니다 : mysql.wisborg.dk/2014/01/13/…
Gareth

1
@Gareth : mysql -mysql-5-7-3-까지 작동합니다. 업데이트 해주셔서 감사합니다.
Joddy

11
이러한 모든 빈 세트를했다 ... 아직 여전히 잠금이 ... PROCESSLIST에 표시되는
K2xL

1
아래의 주석을 확인하십시오. stackoverflow.com/a/36175882/362574
Joddy

50

테이블을 잠그는 프로세스를 찾을 수 없다면 (이미 죽었 기 때문에) 여전히 이렇게 정리중인 스레드 일 수 있습니다.

섹션 TRANSACTION

show engine innodb status;

끝에

---TRANSACTION 1135701157, ACTIVE 6768 sec
MySQL thread id 5208136, OS thread handle 0x7f2982e91700, query id 882213399 xxxIPxxx 82.235.36.49 my_user cleaning up

Clear transaction deadlock 의 주석에서 언급했듯이

트랜잭션 스레드를 직접 종료 할 수 있습니다.

 KILL 5208136;

나를 위해 일했습니다.


10

mysql 5.7은 performance_schema.metadata_locks테이블을 통해 메타 데이터 잠금 정보를 노출 합니다.

여기에 문서화


4

Datagrip과 비슷한 문제가 있었지만 이러한 솔루션 중 어느 것도 작동하지 않았습니다.

Datagrip Client를 다시 시작하면 더 이상 문제가되지 않았으며 테이블을 다시 삭제할 수있었습니다.


3
다시 시작 / 재부팅-모든 컴퓨터 문제에 대해 100 % 작동하는 솔루션입니다. 그러나 생산성에 재부팅이 항상 가능하지 않은 것은
asgs

1
나는 같은 문제가 있었고 DataGrip을 닫으면 갑자기 모든 잠금이 해제되었습니다. 즉 .. 시간 낭비의 무리입니다
ScottBurfieldMills
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.