week-with-me / TWIL

This Week I Learned ✍️
https://twil.weekwith.me
1 stars 8 forks source link

N+1 쿼리 문제 - TWIL #77

Open utterances-bot opened 2 years ago

utterances-bot commented 2 years ago

N+1 쿼리 문제 - TWIL

N+1 쿼리 문제

https://twil.weekwith.me/4%EA%B8%B0/%EC%84%B1%EC%8A%B9%EC%9D%B5/2022-01-16-N%2B1-query-problem/

0417taehyun commented 2 years ago

N+1 쿼리 문제 관련해서 좋은 글 작성해주셔서 감사합니다! ORM을 사용할 때 주의해야 하는 부분이라고만 이야기를 들었지 사실 한 번도 제대로 발생하는 원인과 이를 해결할 방법에 관해서 고민해 본 적이 없었네요 😂

작성해주신 지연 로딩(Lazy Loading) 때문에 N+1 쿼리 문제가 발생하고 이를 해결하기 위해 즉시 로딩(Eager Loading)을 사용하면 된다는 걸 처음 알게 되었습니다. Django에서 selected_relatedprefetch_related를 사용하는 게 N+1 쿼리 문제를 해결하기 위한 즉시 로딩 기업이었다는 걸 이번 글을 통해 알게 되었네요!

한 가지 아쉬운 건 실제로 지연 로딩 때문에 N+1 쿼리문이 발생하는 사례와 Rails에서 include 메서드를 통해 이를 해결하여 쿼리문을 N+1회 날리지 않는 사례를 보여주셨으면 더 좋았을 것 같아요. 단순히 글로만 풀어져 있어서 살짝 아쉬웠습니다.

이번 한 주도 고생 많으셨습니다! 데이터베이스는 알면 알수록 어렵네요 😂

iksflow commented 2 years ago

@0417taehyun 피드백 감사합니다 태현님! 실제 코드와 함께 알아봤으면 더 좋았을텐데 말이죠 ㅠㅠ 시간관계상 코드를 생략해버렸네요 ..ㅎㅎ 기회가 되면 코드로 확인하는 부분을 다뤄볼게요!