[10분 테코톡] 수달의 JPA N+1 문제

JIWOO YUN·2023년 4월 2일
0
post-custom-banner

movie


N+1 문제란?

  • 요청이 1개의 쿼리로 처리되길 기대했는데 N개의 추가 쿼리가 발생하는 현상
    • 만약 100만건의 데이터를 처리할 때 어마무시한 데이터 쿼리가 진행되서 낭비가 심해진다.

지연로딩이란?

  • 엔티티를 조회할 시 사용할때까지 데이터로딩을 미루는 것

JPQL이란?

  • 엔티티를 대상으로 쿼리 작성

N+1 문제를 해결하는 방법

  • Fetch Join
- select 크루.*,
- 할일.*
- from 크루 join fetch 할일
  • 최초에 관련된 데이터를 한꺼번에 가져와서 객체화를 해줬기 때문에 DB를 거치지않고 데이터를 반환해준다.
    • 1개의 쿼리로 문제가 해결된다.

즉시로딩을 사용할경우

  • 연관관계가 있는 엔티티는 신경안쓰고 조회대상이 되는 Entity기준으로만 쿼리를 만든다.
    • 즉시 쿼리를 실행해서 진행하면 전체 로딩을 하고 N+1쿼리를 조회한다.

-> 즉시로딩을 최대한 사용하지말고 , 지연로딩 + fetch join으로 하자.


profile
열심히하자
post-custom-banner

0개의 댓글