SERIES

MySQL 락과 데드락

2 Posts·Last updated on April 30, 2025

데드락 로그를 읽기 위한 InnoDB 락 정리 — S락·X락·갭 락·락 승격

April 21, 2025

1. 두 개의 기본 락: 공유락(S)과 배타락(X) InnoDB의 행 락은 두 종류에서 출발합니다. 공유락(Shared Lock, S): 읽기를 위한 락. 여러 트랜잭션이 같은 행에 동시에 S락을 쥘 수 있습니다. 단, 그 행을 바꾸려는 배타락은 막습니다. (과거 )로 명시적으로 걸 수 있습니다. 배타락(Exclusive Lock, X): 쓰기를 위한 락…


INSERT 한 문장 안의 데드락 — 서브쿼리 S락과 트리거 X락, 두 단계 락의 순서 역전

April 30, 2025

이 글은 "S락·X락·갭 락·락 승격 — InnoDB 락 노트"에 이어지는 2편입니다. 1편에서 정리한 공유락(S)·배타락(X)·락 승격 개념을 그대로 가져다 씁니다. 운영 DB 모니터링에서 데드락(deadlock) 기록을 발견했습니다. 데드락 로그가 지목한 문장은 에 행 하나를 넣는 upsert 쿼리였습니다. 단순해 보이는 INSERT 한 번이 교착에 …