728x90
반응형
Spring Batch에서 Step의 데이터 처리 방식은 Task과 Chunk 두가지가 있다.
Task(Tasklet)
- 직접 구현한 Tasklet 실행
- 단일 작업 기반으로 처리되는 것이 더 효율적인 경우 사용
- Step이 중지될 때까지 execute 메서드가 계속 반복해서 수행하고, 수행할 때마다 독립적인 트랜잭션이 얻어짐

Chunk
- ChunkOrientedTasklet을 실행
- 한 번에 하나씩 데이터(row)를 읽어 Chunk라는 덩어리를 만든 뒤, Chunk 단위로 트랜잭션을 다룸
- Chunk 기반 Step은 ItemReader, ItemProcessor, ItemWriter라는 3개의 주요 부분으로 구성 ➜ ItemReader와 ItemProcessor에서 데이터는 1건씩 다뤄지고, ItemWriter에선 Chunk 단위로 한번에 처리
- Chunk 단위로 트랜잭션을 수행하기 때문에 실패할 경우엔 해당 Chunk 만큼만 롤백이 되고, 이전에 커밋된 트랜잭션 범위까지는 반영이 됨

간단하게 적어보면 Task는 하나의 데이터를 처리할 때 하나의 트랜젝션을 얻고 Chunk는 Chunk Size만큼의 데이터를 처리할 때 하나의 트랜젝션이 얻어지는 것 같다.


728x90
반응형
'Web > Spring' 카테고리의 다른 글
Spring Open Feign 녀석을 만났다. (0) | 2024.03.04 |
---|---|
맨땅에 Spring Batch - 회원 복제 (0) | 2024.01.16 |
맨땅에 Spring Batch - Item (0) | 2024.01.16 |
맨땅에 Spring Batch - Job 그리고 Step (0) | 2024.01.16 |
맨땅에 Spring Batch - Meta Table (0) | 2024.01.16 |