Loading...
MySQL 9.5 Reference Manual 9.5의 17.15.2 InnoDB INFORMATION_SCHEMA Transaction and Locking Information의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
17.15.2.1 Using InnoDB Transaction and Locking Information 17.15.2.2 InnoDB Lock and Lock-Wait Information 17.15.2.3 Persistence and Consistency of InnoDB Transaction and Locking Information
하나의 INFORMATION_SCHEMA 테이블과 두 개의 Performance Schema 테이블을 사용하면 InnoDB 트랜잭션을 모니터링하고 잠재적인 락킹 문제를 진단할 수 있습니다:
INNODB_TRX: 이 INFORMATION_SCHEMA 테이블은 현재 InnoDB 내부에서 실행 중인 모든 트랜잭션에 대한 정보를 제공합니다. 여기에는 트랜잭션 상태(예를 들어, 실행 중인지 또는 락을 기다리는 중인지), 트랜잭션이 시작된 시점, 그리고 트랜잭션이 실행 중인 특정 SQL 스테이트먼트가 포함됩니다.
data_locks: 이 Performance Schema 테이블에는 보유 중인 각 락과, 보유 중인 락이 해제되기를 기다리며 블록된 각 락 요청에 대해 하나의 로우가 포함됩니다:
락을 보유한 트랜잭션의 상태가 어떻든 간에, 보유 중인 각 락에 대해 하나의 로우가 존재합니다 (INNODB_TRX.TRX_STATE가 RUNNING, LOCK WAIT, ROLLING BACK 또는 COMMITTING인 경우).
InnoDB에서 다른 트랜잭션이 락을 해제하기를 기다리고 있는 각 트랜잭션(INNODB_TRX.TRX_STATE가 LOCK WAIT인 경우)은 정확히 하나의 블로킹 락 요청에 의해 블록됩니다. 그 블로킹 락 요청은, 다른 트랜잭션이 비호환 모드로 보유하고 있는 로우 또는 테이블 락에 대한 것입니다. 락 요청은 항상, 그 요청을 블록하는 보유 락의 모드와 비호환인 모드를 갖습니다(읽기 vs. 쓰기, 공유 vs. 배타).
블록된 트랜잭션은 다른 트랜잭션이 커밋 또는 롤백하여 요청된 락을 해제하기 전까지는 진행될 수 없습니다. 블록된 각 트랜잭션에 대해, data_locks에는 해당 트랜잭션이 요청했고 그에 대해 대기 중인 각 락을 설명하는 로우가 하나씩 포함됩니다.
data_lock_waits: 이 Performance Schema 테이블은 어떤 트랜잭션이 어떤 락을 기다리고 있는지, 또는 특정 트랜잭션이 어떤 락을 기다리고 있는지를 나타냅니다. 이 테이블에는 블록된 각 트랜잭션에 대해 하나 이상의 로우가 포함되며, 그 트랜잭션이 요청한 락과 그 요청을 블록하고 있는 락을 나타냅니다. REQUESTING_ENGINE_LOCK_ID 값은 트랜잭션이 요청한 락을 가리키고, BLOCKING_ENGINE_LOCK_ID 값은 첫 번째 트랜잭션이 진행하는 것을 막고 있는(다른 트랜잭션이 보유한) 락을 가리킵니다. 특정 블록된 트랜잭션에 대해서는, data_lock_waits 내의 모든 로우가 REQUESTING_ENGINE_LOCK_ID에 대해 동일한 값을 갖고, BLOCKING_ENGINE_LOCK_ID에 대해서는 서로 다른 값을 갖습니다.
위에 언급된 테이블에 대한 자세한 내용은 Section 28.4.28, “The INFORMATION_SCHEMA INNODB_TRX Table”, Section 29.12.13.1, “The data_locks Table”, 및 Section 29.12.13.2, “The data_lock_waits Table”을 참조하십시오.
17.15.1 InnoDB INFORMATION_SCHEMA Tables about Compression
17.15.3 InnoDB INFORMATION_SCHEMA Schema Object Tables