Spring Batch Cursor vs Paging
데이터베이스 연결
- Cursor: 단일 데이터베이스 연결을 유지하며 전체 결과를 스트리밍 방식으로 가져옴. (계속 가져옴) 
- Paging: 페이지 단위로 여러 번 쿼리를 실행하여 데이터를 가져옴. (페이지 별로 커넥션을 다르게 가져감)메모리 사용 
- Cursor: 전체 결과셋을 메모리에 유지하므로 대용량 데이터 처리 시 메모리 부하가 높음 (메모리 많이 듦) 
- Paging: 페이지 크기만큼만 메모리를 사용하므로 상대적으로 메모리 효율적스레드 안전성 
- Cursor: 스레드 안전하지 않아 멀티스레드 환경에 부적합 
- Paging: 스레드 안전하여 멀티스레드 환경에서 사용 가능데이터 정렬 
- Cursor: 특별한 정렬이 필요 없음. 
- Paging: 페이징 처리 시 일관된 결과를 위해 데이터 정렬이 필수이럴 때 쓰면 좋을 듯? 
- Cursor - 단일 스레드 환경 
- 메모리가 충분한 경우 
- 전체 데이터셋을 빠르게 처리해야 하는 경우 
 
- Paging - 멀티스레드 환경 
- 메모리 제약이 있는 경우 
- 대용량 데이터 처리 시구현? 
 
- Cursor: 구현이 상대적으로 간단함. 
- Paging: 페이지 크기 설정, 정렬 등 추가 설정이 필요하여 구현이 약간 더 복잡함.주의사항 
- Cursor: 긴 실행 시간 동안 데이터베이스 연결을 유지해야 하므로 네트워크 불안정성에 취약할 수 있음. 
- Paging: 데이터 변경이 빈번한 환경에서는 페이지 간 데이터 일관성 보장이 어려울 수 있음. 
결론
- 일반적으로 Paging 방식이 더 안전하고 범용적이므로 기본 선택으로 고려해볼 수 있을 것 같음.- 
Last updated