MySQL SELECT FOR UPDATE 락 대기 해결: Lock Escalation 오해와 1205 타임아웃 분석
주문 한 건을 SELECT … FOR UPDATE로 조회했는데, 다른 주문의 UPDATE까지 멈춘다면 무엇부터 확인해야 합니까? 결과가 한 행이라는 이유만으로 잠금 범위…
주문 한 건을 SELECT … FOR UPDATE로 조회했는데, 다른 주문의 UPDATE까지 멈춘다면 무엇부터 확인해야 합니까? 결과가 한 행이라는 이유만으로 잠금 범위…
같은 행을 수정하지 않으면 교착 상태도 발생하지 않을 것이라고 생각하기 쉽습니다. 하지만 InnoDB의 REPEATABLE READ에서는 아직 존재하지 않는 값이 들어갈 인덱스 구…
서브쿼리를 WITH 절로 바꾸면 SQL을 읽기는 편해집니다. 그러나 가독성이 좋아졌다는 이유만으로 실행 시간까지 줄어드는 것은 아닙니다. MySQL에서는 Derived Table과…
운영 데이터베이스에서 인덱스를 정리할 때 어려운 부분은 삭제 문법이 아닙니다. 해당 인덱스가 사라졌을 때 어떤 SQL의 실행계획이 달라지는지 확인하는 일입니다. 평소 자주 실행하는…
복합 인덱스는 일반적으로 선두 컬럼부터 조건에 사용해야 효율적인 범위 탐색이 가능합니다. 그렇다면 (status, created_at) 인덱스만 있는 주문 테이블에서 status …