쿼리 실행 계획 분석으로 병목 추적 경험
사이드 프로젝트에서 게시글 목록 API가 데이터가 늘수록 눈에 띄게 느려지는 현상이 생겼습니다. 처음엔 서버 자원이 부족한 줄 알았는데 EXPLAIN ANALYZE로 쿼리 실행 계획을 보니 정렬 단계에서 인덱스가 전혀 안 쓰이고 있었습니다. created_at 컬럼에 단독 인덱스가 있었는데, WHERE 조건 컬럼의 카디널리티가 낮아 옵티마이저가 시퀀셜 스캔을 선택하고 있었습니다. 복합 인덱스로 교체하고 쿼리를 조정했더니 응답 시간이 약 1.2초에서 120ms 수준으로 줄었습니다.
이후로 성능 문제는 추측보다 계측 도구를 먼저 쓰는 순서로 접근하는 습관이 생겼고, 느리다고 느끼는 순간 곧바로 프로파일링부터 켜는 것이 지금의 루틴이 됐습니다.