BatchSize 관련 질문 드립니다.
511
작성한 질문수 32
우선 정말 좋은 강의 해주셔서 감사합니다.
batch size 관련해서 이해 안되는것이 있어서 질문드립니다.
우선 batch size가 일대다 관계에서 조인 문제의 N+1을 해결해준다는 것은 이해가 가는데.
batch size를 100으로 설정했을시 쿼리에 team_id 당 member들을 100개씩 날려서 패치 조인처럼 하는 방식인가요??
정확하게 이해가 안되서 질문드립니다.
답변 1
8
안녕하세요. hangs0908님
batch size는 일대다 관계도 해결하고, 다대일 관계 등등 수 많은 N+1 문제를 해결해줍니다.
예를 들어서
member -> team 관계가 지연로딩 관계입니다.
member를 10개 조회했으면, N+1이 최악의 경우 N이 10번 발생하겠지요.
첫 쿼리 select m from Member m -> member 엔티티 10개 조회
while 루프 10개 실행
m.getTeam().getName()
이렇게 하면 지연로딩으로 select * from team where id = 1...10 쿼리가 총 10번 실행됩니다.
그런데 batchSize를 10으로 지정해두면 다음과 같이 동작합니다.
첫 쿼리 select m from Member m -> member 엔티티 10개 조회
while 루프 10개 실행
m.getTeam().getName()
지연 로딩시 실행 쿼리
루프 1
select * from team where member_id in (1,2,3,4,5)
루프 6
select * from team where member_id in (6,7,8,9,10)
이렇게 batchSize를 5로 변경하면 in 쿼리로 바뀌면서 루프시 총 10번 실행되는 쿼리가 2번만 실행됩니다.
직접 테스트 해보시면 더 많이 이해가 되실꺼에요^^
추가로 더 깊은 내용은 https://www.inflearn.com/questions/34469 를 참고하시면 도움이 됩니다.
감사합니다.
실무 조언 관련 질문입니다.
0
40
1
H2데이터베이스 파일 생성
0
48
2
서브쿼리 강의에서 ALL 예시 관련 질문드립니다.
0
49
2
수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?
0
46
1
JPQL 메소드와 락
0
49
1
Delivery @OneToOne
0
55
1
17강 4~5분대 테이블 값 조회가 안됩니다.
0
85
2
UnsupportedOperationException 발생
0
80
3
H2 Database 연결이 안됩니다.
0
87
2
연관관계 매핑 질문드립니다.
0
79
2
h2데이터베이스 실행오류
0
103
2
persistence.xml
0
101
2
양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?
0
76
1
영속성 컨텍스트
0
61
1
JPA 프록시
0
87
1
Native Query와 MyBatis
0
62
1
영속성 컨텍스트는 어떤 메모리에 저장되는건가요?
0
81
1
임베디드 타입 예시 코드 관련 질문
0
110
3
명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요
0
89
3
인텔리제이 패키지 커서 단축키 질문
0
104
2
혹시 현재는 ID 데이터 타입이 String이면 안되나요?
0
134
1
양방향 연관관계 시 연관관계 주인을 설정하는 이유
0
67
1
임베디드 타입과 MappedSuperClass의 차이점이 궁금합니다.
0
95
1
데이터베이스가 초기화되는 것 같아요
1
173
2





