Chunk 처리

한 줄 정의

Chunk 처리는 대량 데이터를 한 번에 처리하지 않고 일정 크기의 묶음으로 나누어 읽고 처리하고 저장하는 방식이다.

실무에서 왜 문제 되는가

  • 대량 데이터를 한 번에 읽으면 메모리 사용량과 트랜잭션 시간이 커진다.
  • 하나의 큰 트랜잭션은 lock 유지 시간이 길고 실패 시 재처리 범위가 크다.
  • chunk 크기가 너무 작으면 오버헤드가 커지고 너무 크면 장애 영향이 커진다.
  • offset 기반 chunk는 데이터 변경 중 누락이나 중복을 만들 수 있다.

실무 판단 기준

상황선택
데이터가 매우 큼chunk 단위 처리
정렬 기준이 안정적keyset 기반 조회
실패 재처리 필요chunk별 상태 저장
외부 API 호출 포함더 작은 chunk와 재시도 정책

자주 나는 실수

  • offset pagination으로 변경 중인 데이터를 처리한다.
  • 전체 작업을 하나의 트랜잭션으로 묶는다.
  • chunk 처리 후 진행 상태를 남기지 않는다.
  • chunk 크기를 측정 없이 감으로 정한다.

확인 방법

  • 처리 시간, 메모리, DB lock 시간을 chunk 크기별로 비교한다.
  • 실패 시 마지막 완료 chunk부터 재시작 가능한지 확인한다.
  • 처리 중 데이터 변경이 있어도 누락/중복이 없는지 테스트한다.

핵심 요약

Chunk 처리는 대량 작업을 작은 단위로 나누어 안정성을 높인다.

큰 트랜잭션은 실패 복구와 lock 측면에서 위험하다.

chunk 크기는 처리량, 메모리, 외부 API 비용을 보고 정한다.

진행 상태를 남겨야 실패 후 재처리가 가능하다.

변경 중인 데이터는 offset보다 안정적인 key 기준 처리가 안전하다.

꼬리 질문

  • Chunk 크기는 어떤 기준으로 정할 것인가?
  • Offset 기반 batch 조회는 왜 위험할 수 있는가?
  • Chunk별 트랜잭션은 어떤 장점과 한계가 있는가?

관련 문서