AI Briefing

[if kakao 2022] 배치 성능을 고려한 최선의 Reader

·2022.12.09 19:30

핵심 내용

대량 데이터 배치 처리 시 성능을 좌우하는 Reader의 한계와 이를 극복하기 위한 최적화 방안을 설명한다.

1 / 2

자세히 보기

배치 처리 성능의 80% 이상은 데이터를 읽어오는 ItemReader 단계에서 결정된다. 특히 수십억 건의 데이터 중 필요한 데이터만 골라내는 작업이 전체 성능의 핵심이다.

대량 데이터를 처리할 때는 메모리 한계와 시스템 부하를 방지하기 위해 데이터를 일정 단위로 나누어 처리하는 Chunk Processing이 필수적이다.

기존의 PageItemReader는 MySQL의 LIMIT OFFSET 방식을 사용하는데, 이는 Offset 값이 커질수록 조회 속도가 급격히 느려지는 성능 한계가 있다. 이를 해결하기 위해 마지막 ID 값을 기준으로 다음 데이터를 조회하는 ZeroOffsetItemReader를 사용하면 Offset을 0으로 유지하며 빠른 성능을 확보할 수 있다.

데이터를 조금씩 가져오는 Cursor 방식도 존재한다. 다만, JpaCursorItemReader는 모든 데이터를 메모리에 로드하여 **OOM(Out of Memory)**을 유발할 수 있으므로, JdbcCursorItemReader나 HibernateCursorItemReader를 사용하는 것이 권장된다.

이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.