이 글은 실제 운영 환경에서 발생한 deadlock 사례와 해결 방법을 유사한 구조로 대체하여 다룹니다.문제의 구조와 해결 방법은 동일합니다.운영 중인 주문 처리 시스템에서 MySQL deadlock이 발생했습니다. 모니터링 알림으로 발견했고, 트랜잭션 하나가 롤백되면서 주문 상태 갱신이 1분 정도 지연됐습니다. 원인을 추적하고 해결한 과정을 공유합니다.무슨 일이 있었나주문 시스템에는 두 개의 워커가 같은 DB를 바라보고 있습니다. 주문 상태 관리 워커: 스케줄에 따라 주문 상태를 변경 (예: 대기 → 진행 중) 결제 처리 워커: 결제가 들어올 때마다 주문 금액을 갱신 이 두 워커가 같은 주문 건에 대해 동시에 UPDATE를 날렸고, 서로 상대방이 잡고 있는 row lock을 기다리는 순환 대기 상태..