강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

신나는 라이언님의 프로필 이미지
신나는 라이언

작성한 질문수

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

5-4. JPA 와 N+1 문제 - 대표적인 사례

N+1 강의 관련 질문입니다!

작성

·

2

0

5-4 강의를 보고 궁금해서 여쭤봅니다!

24분 즈음에 In절로 가져오는게 너무 많은 양이면 결국 쿼리 수가 많아진다는게 이해가 가지않습니다.

In절로 너무 많은 양을 가져왔을 때 불필요한 데이터가 많아져서 오버헤드가 발생할 수 있는거지, 오히려 쿼리수는 감소하는거아닌가요?

앞서 계속 강의를 그렇게 이해하다가 24분 즈음 하신 말씀때문에 헷갈려서 질문드립니다!

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 신나는 라이언님.

N+1 문제와 관련하여 강의를 듣고 혼동이 생기신 걸로 보이네요. N+1 문제는 데이터베이스 쿼리가 과도하게 발생하여 성능에 영향을 미치는 상황을 설명하기 위해 자주 사용되는 용어입니다. 특히, 관계형 데이터베이스에서 조인을 사용하지 않고 데이터를 가져올 때 생길 수 있는 문제인데요, 주로 다음과 같은 상황들을 고려하셔야 합니다.

N+1 문제의 이해:

  1. 기본 개념:

    • N+1 문제는 일반적으로 하나의 메인 쿼리(N)와 각각의 하위 항목을 가져오기 위한 추가 쿼리들이 더해져 (+1) 발생하는 문제입니다.
  2. IN 절과 쿼리 수:

    • IN 절을 사용하면 N개의 개별 쿼리 대신 하나의 IN 절로 데이터를 한 번에 가져올 수 있어 쿼리 수 자체는 줄어들 수 있습니다.
    • 그러나, IN 절로 너무 많은 데이터를 가져오게 되면 그 데이터들을 메모리에 적재하며 발생하는 로딩 시간이 길어지거나 메모리 사용량이 많아지는 오버헤드가 발생할 수 있습니다.
  3. 강의 내용 해석:

    • 강의에서 언급하신 “쿼리 수가 많아진다”는 것이 IN 절을 사용하면서 불필요하게 많은 데이터를 가져올 경우 관련된 로직을 처리하거나 추가적인 필터링 과정에서 최종적으로 실제로 필요한 데이터만 관리하는 과정에서 오버헤드가 존재할 수 있다는 의미였을 가능성이 있습니다.

권장 학습 방법:

  • Optimizing Query: 데이터베이스 쿼리를 최적화하여 불필요한 데이터 호출을 줄이고 필요한 데이터만 정확히 가져올 수 있도록 각 상황에 맞게 적절한 쿼리 구조를 만드는 것이 중요합니다.

  • 코드와 쿼리 이해 강화: 수업 자료를 다시 참고하여 어떤 맥락에서 강사님께서 말씀하신 것인지 이해하고, 예제 코드를 통해 직접 실습해보는 것을 권장드립니다.

관련 토픽에서 더 많은 정보가 필요하시다면 다음의 유사한 질문을 다룬 게시글을 참고해 보세요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드립니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점, 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

신나는 라이언님의 프로필 이미지
신나는 라이언

작성한 질문수

질문하기