📝 Issue
JdbcCursorItemReader에서 JdbcPagingItemReader로 변경
| 항목 |
Cursor 방식 (JdbcCursorItemReader) |
Paging 방식 (JdbcPagingItemReader) |
| 처리 속도 |
빠름 (커서 하나 열고 쭉 읽음) |
느릴 수 있음 (LIMIT/OFFSET 반복) |
| 안정성 |
낮음 (DB 커넥션 오래 점유) |
높음 (페이지마다 트랜잭션 분리) |
| DB 커넥션 사용 |
소수 커넥션을 오래 점유 |
다수 커넥션을 짧게 점유 |
| 메모리 사용량 |
효율적 (한 row씩 스트리밍) |
중간 수준 (page 단위로 로딩) |
| 병렬 처리 / 재시작 |
어려움 (트랜잭션 전체 묶임) |
유리 (페이지 단위 처리) |
| 대용량 적합성 |
성능 중심이라면 적합 |
안정성 중심이라면 적합 |
📄 설명
- 기존에 JdbcCursorItemReader로 구현되어 있었으나, 이 방식이 결제 데이터를 계속해서 전체 조회하는 것을 알게 되었습니다. 그래서 마지막 payment를 저장해두었다가 그 다음 부분부터 작업을 수행하도록 하려고 했으나, JdbcCursorItemReader는 기술적으로는 구현 가능하지만 Spring Batch의 메타 정보와 자동으로 연동되지 않기 때문에 부적절한 선택이라는 것을 알게 되었습니다.
- 데이터가 적다면 처리 속도가 빠른 JdbcCursorItemReader 사용, 데이터가 많다면 처리 속도가 조금 느리더라도 읽어오는 데이터의 양이 적은 JdbcPagingItemReader 사용
✅ 작업할 내용
🙋🏻 참고 자료
관련 문서나 참고 링크가 있다면 적어주세요.
📝 Issue
📄 설명
✅ 작업할 내용
🙋🏻 참고 자료