Skip to content

[FEATURE] JdbcPagingItemReader로 변경 #274

@sng02006

Description

@sng02006

📝 Issue

JdbcCursorItemReader에서 JdbcPagingItemReader로 변경

항목 Cursor 방식 (JdbcCursorItemReader) Paging 방식 (JdbcPagingItemReader)
처리 속도 빠름 (커서 하나 열고 쭉 읽음) 느릴 수 있음 (LIMIT/OFFSET 반복)
안정성 낮음 (DB 커넥션 오래 점유) 높음 (페이지마다 트랜잭션 분리)
DB 커넥션 사용 소수 커넥션을 오래 점유 다수 커넥션을 짧게 점유
메모리 사용량 효율적 (한 row씩 스트리밍) 중간 수준 (page 단위로 로딩)
병렬 처리 / 재시작 어려움 (트랜잭션 전체 묶임) 유리 (페이지 단위 처리)
대용량 적합성 성능 중심이라면 적합 안정성 중심이라면 적합

📄 설명

  • 기존에 JdbcCursorItemReader로 구현되어 있었으나, 이 방식이 결제 데이터를 계속해서 전체 조회하는 것을 알게 되었습니다. 그래서 마지막 payment를 저장해두었다가 그 다음 부분부터 작업을 수행하도록 하려고 했으나, JdbcCursorItemReader는 기술적으로는 구현 가능하지만 Spring Batch의 메타 정보와 자동으로 연동되지 않기 때문에 부적절한 선택이라는 것을 알게 되었습니다.
  • 데이터가 적다면 처리 속도가 빠른 JdbcCursorItemReader 사용, 데이터가 많다면 처리 속도가 조금 느리더라도 읽어오는 데이터의 양이 적은 JdbcPagingItemReader 사용

✅ 작업할 내용

  • JdbcCursorItemReader에서 JdbcPagingItemReader로 변경

🙋🏻 참고 자료

관련 문서나 참고 링크가 있다면 적어주세요.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions