목록 보기
BULK 처리 Write에 집중해서 개선해보기
백엔드

BULK 처리 Write에 집중해서 개선해보기

마켓컬리
마켓컬리
2023년 9월 20일

두줄요약

JPA의 건별 INSERT 한계를 JDBC 배치 INSERT로 개선한 사례를 소개했습니다. PK 추론으로 1:N 외래키를 연결해 처리 시간과 DB 부하를 줄였습니다.

문제 상황

  • 대량 INSERT 시 애플리케이션·DB 리소스 급증과 장애 위험
  • JPA saveAll()의 건별 Write 쿼리 발생
  • 부모·자식 1:N 데이터의 PK·외래키 연결 제약

해결 방법

  • JDBC batchUpdate() 기반 다중 VALUES INSERT 적용
  • last_insert_id()와 Auto Increment 순차 PK를 이용한 부모 PK 추론
  • 추론한 PK로 자식 데이터의 외래키 설정 후 별도 BULK INSERT

성능/운영 포인트

  • member 1만 건과 article 약 3만 건 기준 JPA 78초, JDBC 1.7초 결과
  • INSERT 쿼리 횟수 감소에 따른 처리 속도 및 DB 부하 개선
  • PK 증가 규칙과 생성 전략에 의존하는 방식

트레이드오프

  • 복잡한 외래키 관계일수록 애플리케이션 로직 복잡도 증가
  • JPA 영속성 컨텍스트와 JDBC 혼용 시 상태 불일치 주의
  • 객체 추상화 편의성과 직접 쿼리 성능 간 선택

컬리 계열사 채용12건

채용 사이트에서 전체 보기

다음 읽기

#JPA 주제를 이어서 읽기

BULK 처리 Write에 집중해서 개선해보기

BULK 처리의 Write 성능 개선을 중심으로 JPA와 JDBC의 차이를 정리했습니다. last_insert_id와 PK 연산을 활용해 FK 포함 대량 적재를 빠르게 처리하는 방법을 설명했습니다.

마켓컬리
마켓컬리
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...