Spring Batch Cursor vs Paging

데이터베이스 연결

  • Cursor: 단일 데이터베이스 연결을 유지하며 전체 결과를 스트리밍 방식으로 가져옴. (계속 가져옴)

  • Paging: 페이지 단위로 여러 번 쿼리를 실행하여 데이터를 가져옴. (페이지 별로 커넥션을 다르게 가져감)메모리 사용

  • Cursor: 전체 결과셋을 메모리에 유지하므로 대용량 데이터 처리 시 메모리 부하가 높음 (메모리 많이 듦)

  • Paging: 페이지 크기만큼만 메모리를 사용하므로 상대적으로 메모리 효율적스레드 안전성

  • Cursor: 스레드 안전하지 않아 멀티스레드 환경에 부적합

  • Paging: 스레드 안전하여 멀티스레드 환경에서 사용 가능데이터 정렬

  • Cursor: 특별한 정렬이 필요 없음.

  • Paging: 페이징 처리 시 일관된 결과를 위해 데이터 정렬이 필수이럴 때 쓰면 좋을 듯?

  • Cursor

    • 단일 스레드 환경

    • 메모리가 충분한 경우

    • 전체 데이터셋을 빠르게 처리해야 하는 경우

  • Paging

    • 멀티스레드 환경

    • 메모리 제약이 있는 경우

    • 대용량 데이터 처리 시구현?

  • Cursor: 구현이 상대적으로 간단함.

  • Paging: 페이지 크기 설정, 정렬 등 추가 설정이 필요하여 구현이 약간 더 복잡함.주의사항

  • Cursor: 긴 실행 시간 동안 데이터베이스 연결을 유지해야 하므로 네트워크 불안정성에 취약할 수 있음.

  • Paging: 데이터 변경이 빈번한 환경에서는 페이지 간 데이터 일관성 보장이 어려울 수 있음.

결론

  • 일반적으로 Paging 방식이 더 안전하고 범용적이므로 기본 선택으로 고려해볼 수 있을 것 같음.-

Last updated