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