inflearn logo
강의

Course

Instructor

[Spring Batch Introduction] Learning the core of Spring Batch through examples

Transferring DB data (reading and writing DB data)

Chunk size에 대해

3176

DEVEVE

2 asked

0

안녕하세요.

코드를 보면 Step을 만들 때, .<Orders, Accounts>chunk(5) 와 같이 chunk size를 5로 지정했는데요.
ItemReader에서도 PageSize를 5개로 지정했습니다.
그리고 실제로 배치를 실행하면 정상적으로 동작합니다.

하지만, 로그를 보면 select와 insert가 섞여있는데요.
5개씩 실행되는게 어느 단위인지 궁금합니다.
1. Reader에서 5개를 읽어온다.
2. 5개를 Processcor에서 처리한다.
3. 5개를 Writer에서 DB에 작성한다.
저는 위와 같은 방식이라고 생각했는데, 어떤게 맞는건가요?
좋은 강의 감사합니다!

 

spring-batch

Answer 1

2

mjcoding

deveve님 안녕하세요 :)
좋은 질문 감사합니다 ㅎㅎㅎ
Page size는 페이징 처럼 읽는 데이터의 개수이고, Chunk size는 커밋을 할 개수입니다.

  1. ItemReader에서 데이터(item)를 읽기 (이때 페이징 데이터 개수 만큼 읽기)

  2. 읽은 데이터를 ItemProcessor에서 처리

  3. chunk size가 충족이 될 때까지 1 - 2 반복

  4. chunk size 충족 시 Write 수행

  5. 1 - 4 반복

위의 말씀 해주신 내용 처럼 예를 볼게요.
page size 5입니다. 그럼 ItemReader에서는 데이터 (페이징 처럼) 5개를 한번에 읽어 옵니다. ItemProcessor 에서는 방금 읽은 데이터를 처리를 해줘요. 그리고 Chunk size가 5일 때, 5개의 데이터를 Write 해주겠습니다.
page size가 1일 때는, ItemReader에서 데이터 (페이징 처럼) 1개를 읽어 옵니다. ItemProcessor 에서는 방금 읽은 데이터를 처리를 해주겠습니다. Chunk size가 5인데, 아직 5개 chunk 사이즈가 아니기 때문에, write 호출 없이 ItemReader로 돌아가서 똑같이 1개의 데이터를 읽고, ItemProcessor 에서 방금 읽은 데이터를 처리를 하겠습니다. ItemReader-ItemProcessor 반복을 하며 5개의 데이터가 모이면 chunk size가 충족되어 write 작업이 실행 되겠습니다.
설명이 도움이 되셨으면 좋겠습니다.

감사합니다.

[0] 참고 문서
https://docs.spring.io/spring-batch/docs/4.0.x/reference/html/index-single.html#chunkOrientedProcessing

0

DEVEVE

이해가 되었습니다.
감사합니다 :)

배치 실행시 파라미터 (파일 이름)받기 및 (csv) 검증 5.0버전 공유

1

48

1

질문x 1강 일단 실행 코드부분 5.0에 맞춰 수정

1

38

1

spring batch 5.x 버전 설정

1

141

2

Spring Batch 5버전의 경우 실행법 공유

0

165

1

질문입니다.

0

108

1

소스 다운 받을 수 없는건가요?

0

120

1

학습에 사용하는 문서 자료 같은 건 없나요?

0

122

1

spring batch 5버전 소스는 없나요

0

437

1

질문드립니다.

0

340

1

@Configuration 어노테이션 관련 질문있습니다.

0

277

1

다중 Job 구동시 질문 있습니다!!

0

317

1

설정 관련 문의

1

303

1

다중DB 접속 설정 에러

0

958

1

조건별 분기 처리시 질문있습니다

0

352

1

Spring Batch 테이블이 생성되질 않습니다!!!!!

0

1708

2

db이관시 sql 스크립트 데이터 복붙하라고 하시는데 파일은 어디에 있나요 ?

0

492

1

Spring Batch5로 강의내용 최신화 업데이트될 가능성이 있을까요?

0

873

1

reader, writer, processor에서 적용

0

490

1

똑같이 실행하는데 출력이 안돼요

0

1023

2

스케줄러에서 Job을 구분하지 못합니다.

0

609

1

빌드가 실패해요 ㅠㅠ

1

3207

1

Run / Debug 관련 질문드립니다..!

1

914

2

완강했습니다! 마지막 질문 드리고 싶습니다.

0

421

1

여러개의 step 구동 질문

0

398

1