• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

어떤 트랜잭션에서 COMMIT을 평생 안하면

23.07.08 22:21 작성 조회수 599

0

어떤 트랜잭션에서 COMMIT을 평생 안하면, 해당 ROW에 대한 Lock이 평생 풀리지 않을 텐데 MySQL기준으로 이와 관련된 timeout 설정같은 것이 있을까요?

만약 COMMIT이 되지 않고 어플리케이션이 죽었을 경우, DB의 Session이 wait_timeout 만큼 기다렸다가 종료될 것이고 이때 비로소 해당 ROW의 Lock이 해제되는 걸까요? 만약 그렇다면 그 절차도 궁금합니다. DB마다 정책이 다르겠지만 MySQL 기준으로 궁금합니다.

답변 1

답변을 작성해보세요.

2

codesweaver님의 프로필

codesweaver

2023.07.08

안녕하세요. Taewan Kim 님, 공식 서포터즈 코즈위버 입니다.

말씀하신것처럼 wait_timeout 이 경과한 경우 그 트랜잭션은 모두 롤백하게 되는데요, 이 때 Lock도 모두 해제됩니다. wait_timeout 값을 매우 높게 설정한 경우 Lock이 해제되지 않는 문제가 생길 수 있는데 이때는 모니터링 툴 등을 통해 걸러내야 하고, 수동으로 프로세스를 킬 하는 등의 작업이 필요할 수 있습니다.

감사합니다.


Taewan Kim님의 프로필

Taewan Kim

질문자

2023.07.09

답변 감사합니다!