NestJS GraphQL

N+1 문제는 필드 리졸버가 반복될 때 커집니다

부모 목록을 한 번 가져온 뒤, 각 부모의 관계 필드를 개별 조회하면 게시물 수만큼 사용자 조회가 추가됩니다.

1

posts 리졸버

게시물 목록을 한 번에 읽고 각 항목에 authorId를 남깁니다.

N

author 필드 리졸버

각 게시물마다 별도 사용자 조회가 실행되어 같은 ID도 반복될 수 있습니다.

1+N

쿼리 수 증가

목록 크기와 관계 필드 수가 늘면 데이터베이스 부하가 빠르게 커집니다.

Q0 SELECT * FROM posts

게시물 3개 반환

Q1 findUser(101)

첫 번째 게시물 작성자

Q2 findUser(102)

두 번째 게시물 작성자

Q3 findUser(101)

이미 조회한 작성자도 다시 호출

호출 지점

문제는 GraphQL 자체보다 필드 리졸버 내부의 데이터 접근 방식에서 발생합니다.

반복 제거

같은 요청 안에서 필요한 사용자 ID를 모아 한 번의 배치 쿼리로 바꿉니다.

요청 단위 캐시

같은 ID는 재사용하되, 요청이 끝나면 캐시도 함께 사라져야 합니다.