느린 쿼리는 API, ORM, DB를 같이 봐야 고친다

SQL 한 줄만 보지 말고 요청 화면, 관계 로딩, 인덱스, 반환 데이터 크기를 같은 흐름에서 점검합니다.

응답 지연

API latency가 DB 실행 시간에 끌려갑니다.

리소스 상승

CPU, I/O, connection 대기가 늘어납니다.

비용 증가

불필요한 scan과 전송량이 누적됩니다.

동시성 저하

긴 transaction과 lock이 요청을 막습니다.

Request shape

화면이 실제로 필요한 데이터부터 좁힙니다.

  • 필터와 정렬
    WHERE, JOIN, ORDER BY가 인덱스 후보입니다.
  • 반환 범위
    보여줄 컬럼과 관계만 고릅니다.

NestJS / ORM

편한 API 뒤에 숨어 있는 SQL 모양을 확인합니다.

  • Repository find
    관계 로딩과 SELECT 범위가 숨을 수 있습니다.
  • QueryBuilder
    join, select, where를 명시합니다.

Database engine

DB가 실제로 어떻게 읽고 기다리는지 봅니다.

  • EXPLAIN
    scan 방식, 인덱스, rows 예측을 확인합니다.
  • Lock
    긴 작업은 다른 요청의 대기로 보입니다.
증상먼저 볼 것대표 조치
rows가 많다반환 row와 읽은 row를 분리pagination, select 축소
쿼리 수가 많다같은 SQL 반복 여부join 또는 batch loading
scan이 크다필터와 정렬 컬럼단일/복합 인덱스 검토
락이 길다transaction 범위작업 범위와 격리 수준 축소
핵심: 요청 패턴이 SQL 모양을 만들고, SQL 모양이 DB 비용과 사용자 응답 시간을 결정한다.