You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Nestjs Admin GraphQL에서 ResolveField를 활용했을 때, N+1 문제가 발생합니다.
만약 총 5개의 문제를 getProblems에서 가져온다고 할 때, 이때 각각의 tag들을 불러온다면 전체 problem을 조회하는 쿼리 한 번, 각각의 problem에서 tag를 조회하는 쿼리 5번을 요청하게 됩니다.
→ 실제 서버에서도 해봤더니 똑같이 N+1회로 보내집니다.
SELECT*FROM problem;
SELECT*FROM tag WHERE problemId in(1)
SELECT*FROM tag WHERE problemId in(2)
SELECT*FROM tag WHERE problemId in(3)
SELECT*FROM tag WHERE problemId in(4)
SELECT*FROM tag WHERE problemId in(5)
→ 사실 admin 서버가 많이 사용되지는 않을거지만, 미리 최적화하는 것도 괜찮지 않을까요..!
→ 최적화하는건 dataloader 라이브러리를 사용해서 불러온 problemId를 배치에 저장하고, 한꺼번에 tag를 쿼리하는 식으로 한다구 합니다.
Describe the problem and solution
Nestjs Admin GraphQL에서 ResolveField를 활용했을 때, N+1 문제가 발생합니다.
만약 총 5개의 문제를 getProblems에서 가져온다고 할 때, 이때 각각의 tag들을 불러온다면 전체 problem을 조회하는 쿼리 한 번, 각각의 problem에서 tag를 조회하는 쿼리 5번을 요청하게 됩니다.
→ 실제 서버에서도 해봤더니 똑같이 N+1회로 보내집니다.
→ 사실 admin 서버가 많이 사용되지는 않을거지만, 미리 최적화하는 것도 괜찮지 않을까요..!
→ 최적화하는건
dataloader
라이브러리를 사용해서 불러온 problemId를 배치에 저장하고, 한꺼번에 tag를 쿼리하는 식으로 한다구 합니다.Notion task
TAS-
Validations
The text was updated successfully, but these errors were encountered: