DBAtlas · 데이터베이스 운영 아틀라스

블로킹 락 조회(data_lock_waits)

MySQL세션

명령어

SELECT r.trx_id AS waiting_trx, r.trx_mysql_thread_id AS waiting_thread, LEFT(r.trx_query,80) AS waiting_query, b.trx_id AS blocking_trx, b.trx_mysql_thread_id AS blocking_thread, LEFT(b.trx_query,80) AS blocking_query FROM performance_schema.data_lock_waits w JOIN information_schema.innodb_trx r ON r.trx_id = w.requesting_engine_transaction_id JOIN information_schema.innodb_trx b ON b.trx_id = w.blocking_engine_transaction_id;

하는 일

어떤 트랜잭션이 어떤 트랜잭션에 의해 블로킹되는지 관련 쿼리 및 스레드 ID와 함께 보여 준다.

사용 시점

락 대기와 데드락으로 인한 성능 저하를 진단하기 위해.

주의

performance_schema.data_lock_waits는 MySQL 8.0에서 도입되었다. 이전 버전은 information_schema.innodb_lock_waits를 사용한다. 블로킹 스레드를 중지하려면 KILL blocking_thread;를 사용한다.

DBAtlas에서 열기 →

관련 항목