default_batch_fetch_size

JIWOO YUN·2023년 8월 22일

게시물 조회를 하면서 N+1 문제가 발생하였다. 이걸 해결해보기 위해서 default_batch_fetch_size를 썼었는데 이 default_batch_fetch_size는 어떻게 해서 작동되는지가 궁금해져서 찾아보았다.

현재 Article 과 member 사이는 ManyToOne 으로 관계가 설정되어있다.

Article : 게시물

Member : 회원

Article은 Member를 하나만 가질수 있고 Member는 Article을 여러개 가질 수 있기 때문이다.

그렇다 보니 게시물리스트를 보여주는 쿼리가 발생 할 때 Member 조회를 여러번 쿼리가 날라가게 된다.

이경우에 default_batch_fetch_size를 설정해서 사용하게되는데

default_batch_fetch_size 란 지연 로딩을 사용하는 엔티티에서 일괄 조회할 때 fetch Size를 설정하는 옵션이다

  • 여러개의 프록시 객체를 조회할 때 where 절이 같은 여러개의 Select 쿼리들을 하나의 IN 쿼리로 만들어준다.
  • 단점으로는 너무 크게 할경우 네트워크 및 메모리 문제가 발생할 수 있다.
  • 그리고 일괄 조회할 때 조인이나 하위쿼리를 사용시 결과 값이 예상과 다르게 나올 수 있으니 주의해야한다.
profile
열심히하자

0개의 댓글