HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
✍🏻
Learnary (learn - diary)
/Batch/
SpringBatch JdbcPagingItemReader 를 사용하면서 chunk 크기와 page 크기는 어떻게 설정하면 좋을까?

SpringBatch JdbcPagingItemReader 를 사용하면서 chunk 크기와 page 크기는 어떻게 설정하면 좋을까?

 
Batch에서의 Chunk, Paging 기술에서의 Page 단위의 차이PageSize가 10이고 ChunkSize가 50이면 어떻게 될까?청크와 페이지 사이즈 가이드라인
 

Batch에서의 Chunk, Paging 기술에서의 Page 단위의 차이

Chunk란
  • Spring Batch에서 취급되는 데이터 단위이자, 한개의 트랜잭션으로 묶이는 단위이다.
 
Page란
  • 잘라서 읽는 기술 중 하나인 Paging에서의 취급되는 데이터 단위이다
  • PageSize는 데이터의 갯수를 의미한다
 
 

PageSize가 10이고 ChunkSize가 50이면 어떻게 될까?

  • 5번의 페이징쿼리가 요청되고 1개의 트랜잭션으로 묶여 커밋된다.
 
 
그랬을떄, 페이지 사이즈랑 청크사이즈를 같게 해야하는 것은 아닌지 궁금하였다.
혹은 가이드라인에 권장하는 바가 있을 것이라 예상했다.
 

청크와 페이지 사이즈 가이드라인

Java Api Docs 에서 내가 사용할 구현체의 문서를 보니 이렇게 나와있었다.
 
JdbcPagingItemReader (Spring Batch 5.2.1 API)
JdbcPagingItemReader (Spring Batch 5.2.1 API)

JdbcPagingItemReader (Spring Batch 5.2.1 API)

declaration: package: org.springframework.batch.item.database, class: JdbcPagingItemReader

 
Setting a fairly large page size and using a commit interval that matches the page size should provide better performance.
큰 사이즈로 셋팅하고 페이지 사이즈와 일치하는 커밋간격을 사용하는 것이 더 나은 포퍼먼스를 제공한다
보편적으로 커밋 간격(청크 크기)과 페이지 사이즈를 일치시는 것이 성능적으로 이점이 있는것으로 안내되어 이 부분을 활용하여 배치 사이즈로 결정