Post

5주3일차_배치쿼리활용사례실습

5주3일차_배치쿼리활용사례실습

필기 가자

배치 처리의 필요성

  1. 성능 향상:
    • 개별 쿼리를 반복 실행하면 데이터베이스와의 연결이 반복적으로 이루어져 네트워크 및 I/O 비용이 증가합니다.
    • 배치 처리를 통해 여러 쿼리를 한 번에 묶어 실행하면 이러한 비용을 줄일 수 있습니다.
  2. 트랜잭션 관리 최적화:
    • 대량 데이터 작업을 한 트랜잭션 안에서 처리할 수 있어 데이터 일관성을 보장합니다.
    • 예를 들어, 100만 건의 데이터를 삽입할 때 하나의 트랜잭션으로 처리하여 중간 실패에도 안정성을 유지할 수 있습니다.
  3. 효율적인 리소스 사용:
    • 데이터베이스 연결(Connection) 횟수를 줄이고, CPU와 메모리를 더 효과적으로 사용할 수 있습니다.
    • 이는 특히 네트워크 지연이 큰 분산 환경에서 효과적입니다.
  4. 트랜잭션 크기와 성능:
    • 대량 데이터를 처리할 때 트랜잭션 크기가 너무 크면 메모리 사용량과 성능 문제가 발생할 수 있습니다.
    • 적절한 크기로 데이터를 나누어 배치로 처리하여 트랜잭션과 성능을 균형 있게 관리합니다.
  • jdbcTemplate batch update 실습.

  • hibernate.jdbc.batch_size:
    • 한 번에 처리할 SQL 배치 작업 크기 설정.
    • 예: 1000으로 설정하면 1000건의 Insert/Update/Delete 작업을 한 번에 처리.
  • hibernate.order_inserts:
    • Insert 작업을 동일한 테이블끼리 묶어서 정렬.
    • 데이터베이스 성능 최적화.
  • hibernate.order_updates:
    • Update 작업을 동일한 테이블끼리 묶어서 정렬.
    • 데이터 변경 작업의 효율성 증가.
1
2
3
@Modifying
@Query("UPDATE User u SET u.email = '탈퇴한 사용자' WHERE u.createdAt > :date")
void bulkUpdateEmail(@Param("date") LocalDateTime date);

Action Plan

  • modifying 어노테이션 테스트.
  • 대량 데이터 insert 테스트
  • 대량 데이터 delete 테스트

수업 내용 필기 정리.

This post is licensed under CC BY 4.0 by the author.