홈>
Spring Batch 애플리케이션의 모든 작업에 대해 청크 크기를 동일하게 유지하는 것이 좋은지 또는 특정 작업의 동작에 따라 다른 작업에 대해 다르게 유지해야하는지 궁금합니다.
대답은 많은 요소에 달려 있음을 이해할 수 있지만, 이에 대한 표준 접근법이 무엇인지 알고 싶었습니다.
감사합니다
- 답변 # 1
- 답변 # 2
청크 크기는 현재 작업에 따라 매우 다릅니다. 배치 작업의 성능을 최적화하는 주요 방법이며 작성하는 각 작업에 따라 다를 수 있습니다. 예를 들어, 작은 레코드가있는 경우 쓰기 수를 최적화하는 청크를 더 많이 가질 수 있습니다. 레코드가 큰 경우 쓰기간에 메모리에 많은 양을 맞추지 못할 수 있습니다.
관련 자료
- java - Post REST API 만 작동하고, PUT, GET, DELETE API가 스프링 부트 애플리케이션에서 작동하지 않습니다
- AggregateItemReader 또는 다른 솔루션을 사용하여 리더에서 한 번에 여러 행 읽기
- 스프링 부트 + 앵귤러 애플리케이션 작동
- Kubernetes 및 스프링 부트 응용 프로그램을 사용하는 Azure 파일 저장소
- 스프링 배치 AmqpItemReader 승인
- java - 스프링 부트 1 응용 프로그램에서 사용하지 않는 속성을 찾는 방법
- java - 스프링 배치는 마지막 단계를 실행해도 예외가 발생합니다
- amazon web services - AWS 클라우드에서 앵귤러 4 및 스프링 부트 마이크로 서비스 애플리케이션을 배포하는 방법은 무엇입니까?
- 대상을 공격하는 동안 JSP를 다운로드하지만 HTML이 아닌 스프링 부트 응용 프로그램
- java - 스프링 배치에 마침내 작업이 있습니까?
- 스프링 배치 - 단위 테스트가 왜 단계를 두 번 실행합니까?
- java - Spring Boot 애플리케이션에서 웹 소켓 및 Shedlock 호환성을 수정하는 방법
- java - 스프링 배치 - springboot에서 skippolicy 및 retrypolicy 사용
- java - Spring Boot 애플리케이션과 Angular 애플리케이션의 통합
- java : 스프링 부팅에서 스프링 배치로 매개 변수를 전달하는 방법
- PostgreSQL DB1의 Spring Batch 리더에서 PostgreSQL DB2로 쓰는 데 문제가 있습니다
- java - 스프링 배치에서 메모리 내 데이터베이스 재설정
- rest - 액추에이터가 포함 된 스프링 부트 애플리케이션
- Java Config를 사용하여 Spring Batch에서 작동하지 않는 재시도
- MongoDB Compass에서 데이터베이스를 생성/표시하지 않는 Spring Boot 응용 프로그램
청크 크기를 결정할 때 고려해야 할 요소를 이해하면이 질문에 대답하는 데 도움이 될 것입니다. 예를 들어 이러한 요소가 모든 작업에서 동일하다면 (매우 드물지만) 그렇지 않은 이유는 무엇입니까?
"Spring Batch in Action"과 같은 일부 책은 청크 크기를 일반적으로 20에서 200 사이로 유지하는 것이 좋습니다. 같은 책에서 몇 가지 아이디어는 다음과 같습니다.
<올>청크 크기가 너무 작 으면 너무 많은 트랜잭션이 생성되어 비용이 많이 들고 작업이 느리게 실행됩니다.
청크 크기가 너무 크면 데이터베이스가 작업을 롤백 할 수 있어야하기 때문에 데이터베이스와 같은 트랜잭션 리소스도 느리게 실행됩니다.
커밋 간격에 가장 적합한 값은 데이터, 처리, 리소스의 특성 등 많은 요소에 따라 다릅니다.
커밋 간격은 스프링 배치의 매개 변수이므로 작업에 가장 적합한 값을 찾기 위해 주저하지 말고
그렇습니다. 아이디어는 다른 종류의 샘플 데이터와 다른 청크 크기로 작업을 실행하고 결과를 직접 비교 한 다음 청크 크기를 선택하는 것입니다.