INFORMATION_SCHEMA 의 innodb_trx / innodb_locks / innodb_lock_waits 로 락에 대한 정보를 확인할 수 있다.

  • innodb_locks : 락을 얻지 못했거나, 다른 트랜잭션으로 블락이 발생한 경우이며, 어느 잠금이 어느 테이블, 어느인덱스, 어느데이터에 걸려있는지 확인
  • innodb_lock_waits : 락을 얻지 못하고 기다리고 있는 트랜잭션(requesting_trx_id)이 어떤 트랜잭션(blokcing_trx_id) 때문에 기다리고 있는건지 확인
  • innodb_tx : 오랫동안 커밋되지 않은 트랜잭션에 대해 어떤 스레드에 의해 기동되었는지 확인 

 

mysql > SHOW ENGINE INNODB STATUS;
SELECT
r.trx_id waiting_trx_id,
r.trx_mysql_thread_id waiting_thread,
r.trx_query waiting_query,
b.trx_id blocking_trx_id,
b.trx_mysql_thread_id blocking_thread,
b.trx_query blocking_query
FROM
information_schema.innodb_lock_waits w
INNER JOIN information_schema.innodb_trx b ON b.trx_id = w.blocking_trx_id
INNER JOIN information_schema.innodb_trx r ON r.trx_id = w.requesting_trx_id;

 

 

참고

https://www.popit.kr/mysql-lock-%EC%83%81%ED%99%A9-%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0/

https://idea-sketch.tistory.com/m/46

Print Friendly and PDF Posted by JJ*
: