>

Spring Batch 애플리케이션의 모든 작업에 대해 청크 크기를 동일하게 유지하는 것이 좋은지 또는 특정 작업의 동작에 따라 다른 작업에 대해 다르게 유지해야하는지 궁금합니다.

대답은 많은 요소에 달려 있음을 이해할 수 있지만, 이에 대한 표준 접근법이 무엇인지 알고 싶었습니다.

감사합니다


  • 답변 # 1

    청크 크기를 결정할 때 고려해야 할 요소를 이해하면이 질문에 대답하는 데 도움이 될 것입니다. 예를 들어 이러한 요소가 모든 작업에서 동일하다면 (매우 드물지만) 그렇지 않은 이유는 무엇입니까?

    "Spring Batch in Action"과 같은 일부 책은 청크 크기를 일반적으로 20에서 200 사이로 유지하는 것이 좋습니다. 같은 책에서 몇 가지 아이디어는 다음과 같습니다.

    <올>

    청크 크기가 너무 작 으면 너무 많은 트랜잭션이 생성되어 비용이 많이 들고 작업이 느리게 실행됩니다.

    청크 크기가 너무 크면 데이터베이스가 작업을 롤백 할 수 있어야하기 때문에 데이터베이스와 같은 트랜잭션 리소스도 느리게 실행됩니다.

    커밋 간격에 가장 적합한 값은 데이터, 처리, 리소스의 특성 등 많은 요소에 따라 다릅니다.

    커밋 간격은 스프링 배치의 매개 변수이므로 작업에 가장 적합한 값을 찾기 위해 주저하지 말고

    그렇습니다. 아이디어는 다른 종류의 샘플 데이터와 다른 청크 크기로 작업을 실행하고 결과를 직접 비교 한 다음 청크 크기를 선택하는 것입니다.

  • 답변 # 2

    청크 크기는 현재 작업에 따라 매우 다릅니다. 배치 작업의 성능을 최적화하는 주요 방법이며 작성하는 각 작업에 따라 다를 수 있습니다. 예를 들어, 작은 레코드가있는 경우 쓰기 수를 최적화하는 청크를 더 많이 가질 수 있습니다. 레코드가 큰 경우 쓰기간에 메모리에 많은 양을 맞추지 못할 수 있습니다.

관련 자료

  • 이전 python - 행을 반복
  • 다음 mongodb - 다른 요소를 기반으로 배열에서 json 요소 이름 바꾸기