NestJS 쿼리 최적화는 요청 패턴, SQL 모양, 운영 지표로 판단한다

한 번 고치고 끝나는 작업이 아니라 데이터가 늘 때마다 다시 측정하고 조정하는 반복 과정입니다.

Input: 요청 패턴

  • 목록
    필터, 정렬, 페이지 크기
  • 상세
    필요 관계와 컬럼 범위
  • 쓰기 포함
    transaction 길이와 lock 범위

Tools: SQL 모양

  • Index
    scan rows 감소
  • Join / batch
    N+1 왕복 감소
  • Projection
    전송량과 메모리 감소
  • Pagination
    대량 조회 제한

Proof: 운영 지표

  • EXPLAIN
    계획이 index 중심인가
  • Latency
    p95 응답 시간이 줄었는가
  • DB load
    CPU, I/O, lock wait가 줄었는가

Monitor

  • 느린 endpoint와 SQL을 찾는다.

Analyze

  • 실행 계획과 ORM 로그를 읽는다.

Refine

  • 가장 작은 변경을 적용한다.

Repeat

  • 데이터 증가에 맞춰 다시 조정한다.
핵심: 감으로 인덱스를 추가하지 말고, 작은 변경을 실제 트래픽 지표로 증명한다.