안녕하세요.
글 올리는건 처음인듯 싶네요.제가 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을 제가 엉뚱하게 이해를 하고 있어서, 무대뽀식으로 물어보는게 아닌가 싶기도 하네요 -_-;;;
꼼지 2026.03.05
으헉 ㅠ_ㅠ hibernate쪽 하시는분은 많이 없나봐요. 조회수 자체가 낮네요 OTL