rewriteBatchedStatements

JDBC 드라이버 설정 옵션 중 하나로 MySQL에서 배치 SQL 실행 성능을 향상시킨다.

postgreSQL, Maria, Oracle에선 사용 불가.

Hibernate나 JPA에서 사용하는 batch_size와 비슷한 설정임.

여러 개의 INSERT/UPDATE 문을 한 번에 서버로 전송하도록 “재작성”하는 옵션.

rewriteBatchedStatements=true는 MySQL JDBC 드라이버가

PreparedStatement.addBatch()를 통해 누적된 SQL을 내부적으로 하나의 대용량 SQL 문으로 변환(rewrite) 해서 실행하도록 합니다.

이게 없으면 쿼리가 아이템 수 만큼 디비로 전송된다. 각각 쿼리 한건마다 커넥션이 필요해 성능이 떨어짐.

datasource생성할때 코드로 작성할 수도 있고, datasource URL에 설정할 수도 있음.

주의 사항 - Update, Delete시

rewriteBatchedStatedments는 INSERT문에 대해서는 배치성 쿼리 재작성 하는건 맞지만,


jdbcTemplate.batchUpdate

batchUpdate()는 JDBC 드라이버가 제공하는 표준 API.

즉, 자바 코드에서 여러 개의 SQL 문을 하나의 네트워크 트립으로 DB에 보낼 수 있게 하는 기능.