배경

- 전달된 에러를 추적하다가, 아래와 같은 데드락 에러를 만나게 되었다.
InternalError: 1213 (40001): Deadlock found when trying to get lock; try restarting transaction
- 정확한 문제 해결을 위해서 이번 기회에 데드락에 대해서 한번 더 정리를 해보고, 마리아 데이터베이스에서는 어떠한 경우에 데드락이 발생할 수 있는지를 알아보자.
데드락이란 무엇인가?
–

-
교착상태 (
deadlock)이란 두개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있기 때문에 결과적으로는 아무것도 완료되지 못하는 상태를 말한다. -
일반적으로 데이터베이스에서 발생하는 데드락은
DBMS가 감지하여 실행되는 트랙잭션들 사이에 발생하는 데드락으로 각각의 트랜잭션이 사용하는 데이터들 사이의 데드락을 감지하여 알려준다.
InnoDB에서 DeadLock 확인하기
InnoDB는 트랜잭션을 실행시 데드락이 발생하게 되면 그것을 감지하고, 하나의 트랜잭션을 롤백하여 데드락을 해소하고, 그 정보를 로그로 남긴다.
SHOW ENGINE INNODB STATUS

-
위의 구문을 통해서 정보를 얻을 수 있지만 비교적 최신 기록만 남아있다. 따라서 장애가 발생하였을 때 바로 확인해보는 것이 좋다.
-
여러가지 항목이 있는데, 항목의 자세한 값은 다음과 같다.
