해결된 질문
작성
·
915
0
어떤 트랜잭션에서 COMMIT을 평생 안하면, 해당 ROW에 대한 Lock이 평생 풀리지 않을 텐데 MySQL기준으로 이와 관련된 timeout 설정같은 것이 있을까요?
만약 COMMIT이 되지 않고 어플리케이션이 죽었을 경우, DB의 Session이 wait_timeout 만큼 기다렸다가 종료될 것이고 이때 비로소 해당 ROW의 Lock이 해제되는 걸까요? 만약 그렇다면 그 절차도 궁금합니다. DB마다 정책이 다르겠지만 MySQL 기준으로 궁금합니다.
답변 1
2
안녕하세요. Taewan Kim 님, 공식 서포터즈 코즈위버 입니다.
말씀하신것처럼 wait_timeout 이 경과한 경우 그 트랜잭션은 모두 롤백하게 되는데요, 이 때 Lock도 모두 해제됩니다. wait_timeout 값을 매우 높게 설정한 경우 Lock이 해제되지 않는 문제가 생길 수 있는데 이때는 모니터링 툴 등을 통해 걸러내야 하고, 수동으로 프로세스를 킬 하는 등의 작업이 필요할 수 있습니다.
감사합니다.
답변 감사합니다!