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