inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 배치

DB - JpaCursorItemReader

커서 기반 질문입니다.

311

김나다

작성한 질문수 8

0

이전에 커서 기반 설명하실 때 읽어 오는 모든 데이터를 메모리에 할당 한다고 했습니다.

이번 jpa 커서 기반은 open시 다 가져오므로 모든 데이터가 메모리에 할당되는 것이 이해됩니다.

반면 Jdbc 커서 기반에선 설정한 청크 단위로 read, write 수행하는 걸로 아는데, 모든 데이터가 메모리에 할당되는 것이 맞나요?? (맞다면 비효율적인 설계같습니다)

 

 

 

spring-boot spring-batch

답변 1

0

정수원

일반적으로 커서 방식은 DB 로 부터 데이터를 하나씩 하나씩 커서를 옮기면서 가지고 오는 방식입니다.

즉 스트리밍 방식이라 할 있습니다.

그리고 JDBC 에서 하나씩 가지고 온 데이터를 객체로 매핑하는 과정을 거치게 됩니다.

만약 쿼리에서 1000개의 데이터를 커서 방식으로 가지고 온다면 1000개의 데이터를 모두 객체로 매핑하는 과정이 이루어집니다. 이 의미로 본다면 모든 데이터가 메모리에 로드된다고 이해할 수 있습니다.

그렇지만 김나다님께서 말씀하신 것처럼 스프링 배치에서 청크단위로 끊어서 트랜잭션이 이루어지기 때문에 1000 개의 데이터라 할지라도 청크사이즈만큼 메모리에서 처리된다면 성능이나 자원의 사용을 효율적으로 이용하게 됩니다.
즉 스프링 배치에서 청크 개념으로 설계를 한 것이라 볼 수 있습니다.

강의에서 설명한 부분은 스프링 배치의 청크 개념을 떠나 일반적인 커서기반의 메모리 사용에 대한 설명을 의미한다고 보시면 됩니다.

스프링 배치 버전 질문

0

120

1

소스코드가 어디에 있나요?

0

96

2

트랜잭션 예외

0

90

1

질문이 있습니다.

0

128

2

ChunkListener 에서 beforeChunk 의 실행 시점 관련 질문

0

124

2

여러 JOB 설정하는법

0

149

2

강의 자료 다른 방법 있을까요?

0

154

1

JobExecution과 JobExecutionContext와의 관계

0

186

2

특정 job만 실행

1

251

1

Batch 성능 질문

0

152

1

ItemReaderAdapter 종료

0

79

1

[ 강좌 Git 브랜치 문의 ] 섹션 9 > JdbcCursorItemReader, JpaCursorItemReader

0

179

2

Spring Batch 배포 질문

0

245

2

spring batch 버전

0

236

2

retry count 관련 질문

0

171

2

StepExecutionListener 의 afterStep 에서 return ExitStatus.FAILED 에 의한 동작에 의문이 갑니다.

0

330

2

jdbc, jpa 커서방식 조회 방식 차이 질문 (강사님께 답변 받고 싶습니다)

0

234

2

Multithread step과 AsyncItemProcessor

0

202

2

job 재실행

0

250

2

bean 생명주기 문제 도와주세요(@Scope("step"), @Autowired)

0

183

1

Multi-threaded-step과 Partitioning 차이 확인

0

174

2

jdbcCursorReader, jdbcPagingReader 질문

0

145

1

step muti-thread 질문

0

109

1

itemSteam open update close 질문

0

110

1