나는 id와 version 필드를 가진 간단한 예제 엔티티 A를 가지고있다. ID 생성 전략은 TABLE으로 설정됩니다. 속성 hibernate.jdbc.batch_size
및 hibernate.jdbc.batch_versioned_data
은 20
및 true
으로 설정됩니다. Hibernate 일괄 처리 예기치 않은 동작
for (int i = 0; i < 500; i++) {
A a = new A();
a.persist();
if (i % 20 == 0) {
em.flush();
em.clear();
}
}
는 MySQL의 로그를 보면,이 insert into a (version, id) values (0, 1), (0, 2),...(0, 20)
25 회 반복처럼 뭔가를 기다리고 있었다 반면, 500 별도의 insert into a (version, id) values (0, X)
문 결과 . 최대 절전 모드 3.6.8, MySQL은 5.5을 사용하여
org.hibernate.jdbc.AbstractBatcher - Executing batch size: 20
org.hibernate.jdbc.AbstractBatcher - no batched statements to execute
: 디버깅 hibernate.jdbc
로그 레벨을 설정
을 보여줍니다.
무엇이 여기에 있습니까?