[Spring] default_batch_fetch_size의 작동원리
- 코딩/Spring
- 2022. 11. 22.
[Spring] default_batch_fetch_size의 작동원리 알아보기
Spring에서 default_batch_fetch_size는 Hibernate의 설정 중 하나로, 지연 로딩을 사용하는 엔티티에서 일괄 조회할 때 fetch size를 설정하는 옵션입니다. 설정 값은 정수 형태로 지정되며, 한 번의 쿼리로 가져올 엔티티 수를 결정합니다.
예를 들어, default_batch_fetch_size를 20으로 설정하면, 쿼리 한 번으로 20개의 엔티티를 가져올 수 있습니다. 이렇게 일괄 조회를 하면 데이터베이스와의 통신 횟수가 감소하게 되어 성능 향상을 기대할 수 있습니다.
문제점
default_batch_fetch_size를 지나치게 크게 설정하면 네트워크 및 메모리 문제가 발생할 수 있습니다. 또한, 일괄 조회를 하면서 조인이나 하위 쿼리를 사용하는 경우, 결과 값이 예상과 다르게 나올 수 있으므로 주의해야 합니다. 결론적으로, default_batch_fetch_size는 성능 향상을 위해 사용할 수 있는 유용한 옵션입니다. 하지만, 적절한 값을 설정해야하며, 엔티티의 관계와 데이터베이스 환경에 따라 적절한 값을 찾아야 합니다.
설정방법
1. application.properties 파일에 다음과 같이 설정
spring.jpa.properties.hibernate.default_batch_fetch_size=사용할 배치 사이즈
2. application.yml 파일에 다음과 같이 설정
spring:
jpa:
properties:
hibernate:
default_batch_fetch_size: 사용할 배치 사이즈
3. persistence.xml 파일에 다음과 같이 설정
<property name="hibernate.default_batch_fetch_size" value="사용할 배치 사이즈"/>
이를 통해 지연 로딩을 사용할 때 발생할 수 있는 N+1 쿼리 문제를 해결할 수 있습니다. 따라서, 적절한 값을 설정하여 애플리케이션의 성능을 최적화할 수 있습니다.
'코딩 > Spring' 카테고리의 다른 글
[Spring] DB커넥션풀과 Hikari CP란? (0) | 2022.11.23 |
---|---|
Over-fetching vs Under-fetching (0) | 2022.11.22 |
[Spring] ModelMapper를 이용해 DTO와 Entity 변환 방법 (0) | 2022.11.18 |
Spring @Cacheable을 내부 메서드에 쓰면 안되는 이유 (0) | 2022.11.16 |
[Spring] 캐시(Cache) 추상화와 사용법(@Cacheable, @CachePut, @CacheEvict) (0) | 2022.11.16 |