ANALYSIS LOOP

쿼리 최적화는 로그, 실행 계획, 지표를 반복해서 맞추는 루프다

느린 SQL을 찾고, DB가 어떻게 읽는지 보고, 수정한 뒤 실제 latency와 리소스가 좋아졌는지 다시 확인한다.

ORM logging반복 SQL과 예상보다 큰 SELECT를 찾는다.
EXPLAINindex 사용, rows 추정, scan 방식을 읽는다.
DB metricsCPU, I/O, lock, connection 대기를 본다.

1느린 지점 포착

API latency, slow query log, ORM query log에서 후보 SQL을 분리한다.

2실행 계획 읽기

풀 스캔, 임시 정렬, 잘못된 인덱스 선택, 과도한 rows를 확인한다.

3쿼리 모양 수정

index, join, select, pagination, transaction 범위를 조정한다.

4전후 비교

p95 latency, query count, rows read, DB 리소스가 실제로 줄었는지 본다.

type / accessindex lookup인지 full scan인지 확인한다.
rows읽을 것으로 예상한 행 수가 과도한지 본다.
extrasort, temp table, filter 조건을 추적한다.