Hibernate에서 Batch Insertion의 속도 차이?

안녕하세요.

글 올리는건 처음인듯 싶네요.제가 Java에서 Hibernate를 사용해서 MySQL 5에 쿼리를 던져 이것저것 하고 있는데요.

한번은 약 3600row를 한번에 (데이타를 넣을 테이블은 한개) 입력해야 하는 경우가 있어서 for loop으로 하나씩 하니까

약 3분이 걸리더군요 -_-;;;;그래서 구글링해서 찾아낸게

http://www.javabeat.net/tips/81-batch-insert-in-hibernate.html

여기서 하라는 대로 하니까 시간이 약 3~4초대로 줄어들더라구요.hibernate.cfg.xml 에
property name=hibernate.jdbc.batch_size50/property 를 넣어주고

코드에서 (column갯수가 더 많지만 set하는것만 늘어나서 그냥 윗 링크에서 퍼왔습니다)

for (int i =0;i3600;i++) {
Data_Testing dataToInsert = new Data_Testing();
dataToInsert.setName(Name);
dataToInsert.setID(i);
session.save(dataToInsert);

if (i%50 == 0) {
session.flush();
session.clear();
}
}

이렇게 해주고 돌리는데, hibernate.jdbc.batch_size 숫자를 늘려줘도 아무런 변화가 없더군요.

flush를 한번에 50개씩에서 100개씩으로 늘려줬으니 그냥 단순하게 더 빨리 돌아갈줄 알았는데 안그렇더라구요.제가 묻고 싶은건 여기서, hibernate.jdbc.batch_size 가 크게 상관이 있는건가요?

그리고 3600 row를 더 빨리 insert하는 방법은 없는지요?

조언좀 주시면 감사해요~p.s. 제가 hibernate을 잘 아는게 아니기에, 필요한 정보가 다 있는지도 잘 모르겠고.... 느낌상으론 batch insertion을 제가 엉뚱하게 이해를 하고 있어서, 무대뽀식으로 물어보는게 아닌가 싶기도 하네요 -_-;;;

댓글 1

  • 꼼지 2026.03.05

    으헉 ㅠ_ㅠ hibernate쪽 하시는분은 많이 없나봐요. 조회수 자체가 낮네요 OTL

프로그램 개발일반 다른 글

목록