bulkInsert 부분에서 마지막에 이상한? 부분이 있는것 같아서 문의드립니다.
79
投稿した質問数 11
마지막 부분에 getBatchSize()를 1000정도 권장해주셨는데요.
jdbcTemplate.batchUpdate()는 내부적으로 배치사이즈만큼 for문을 통해 반복하는것 같습니다. 즉 실제 처리해야할 대상 데이터가 1000개가 넘는다면 1000번째 이후 데이터부터는 INSERT가 안될거고요.
만약 1000개 미만이라면 예를 들어 500개밖에 없다면 501번째 반복때 java.lang.ArrayIndexOutOfBoundsException발생할것 같습니다.
만약 chunk가 최대 1000개정도가 적당하다라는 말씀이신거면 모르겠지만 1000으로 하드코딩해서 쓴다 라고 하신것처럼 와닿아서.. 오해의 소지가 있는것 같아 남깁니다~
private void bulkProcessSettlements(Map<Long, BigDecimal> settlementMap, LocalDate paymentDate) {
String sql = "INSERT INTO settlements (partner_id, total_amount, payment_date) VALUES (?, ?, ?)";
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
//
}
@Override
public int getBatchSize() {
return 1000;
}
});
}
回答 2
0
안녕하세요, 인프런 AI 인턴입니다.
dlsrksrhk님, jdbcTemplate.batchUpdate()의 getBatchSize()에 대한 질문에 답변드리겠습니다.
getBatchSize() 메서드는 배치 처리를 위한 사이즈를 지정하는 부분입니다. 이 값은 처리할 객체의 수에 따라 유동적으로 설정될 필요가 있습니다. 언급하신 것처럼 실제 데이터의 수가 1000개 미만일 경우나 초과할 경우, 이 함수의 반환 값은 상황에 따라 조정되어야 합니다.
특히, 실제 settlementMap의 사이즈를 고려하여 동적으로 getBatchSize()를 설정하시길 권장합니다. 예를 들어:
@Override
public int getBatchSize() {
return settlementMap.size();
}
또한, 대량의 데이터를 처리할 때 적정한 배치크기를 정하는 것은 매우 중요합니다. 일반적으로 데이터베이스와의 연결 수, 메모리 사용 등을 고려하여 적절히 조정하여 성능을 최적화하는 것이 좋습니다. 이렇게 함으로써 ArrayIndexOutOfBoundsException 같은 예외가 발생하지 않도록 예방할 수 있습니다.
해당 설정을 상황에 맞게 조정하여 사용하시면 더 나은 성능과 안정성을 제공할 수 있을 것입니다. 도움이 되셨길 바랍니다!
자세한 내용은 관련 문서를 참고하실 수 있습니다:
Spring Boot JDBC Template
조회속도 개선에서 더 개선하는 방법이 궁금합니다.
0
2
1
REST API (Self-descriptive messages)
0
11
1
필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)
0
16
2
Sequence 관련 질문
1
18
2
Image Only Query
1
21
2
네트워크 전체 흐름 복습 질문
0
19
1
프로필 사진 세팅과 관련하여 질문 드립니다
1
32
2
질문있습니다
0
22
1
1번 문제 질문입니다.
0
26
1
26년 1회 실기 해설 강의
0
46
2
음악플레이어 문제 중 코드질문
0
22
1
프롬프트, 스킬, sub-agent
0
24
0
잠겨버린 사물함 시간초과 관련 질문입니다.
0
22
1
도메인 모델에서 관계와 규칙을 구분하는 방법
0
32
2
16 강의 메세지 retryCount의 의도
0
18
2
JPA Repository 질문이 있습니다!
1
32
2
페이지네이션 처리를 쿼리에서 하는 방식 질문
1
35
1
프로젝트 질문 문의
0
39
1
섹션3 강의 누락?
0
61
1
팰월드 스트림..?
1
241
1
질문 답변 부탁드립니다
0
160
1
해상도가 720p 까지 가능해서 화면이 흐리네요.
0
156
1
pg 파라미터가 이제는 없어진다고 하는데 업데이트 해주시나요?
0
212
1
paymentProcess() 결제내역 남기기
0
171
0

