-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 
Author Message
 Post subject: save slowing down with 'massive' (more than 1000) inserts
PostPosted: Sat Sep 11, 2004 10:44 pm 
Newbie

Joined: Sat Sep 11, 2004 10:31 pm
Posts: 4
Hibernate version:
2.1.6
Mapping documents:
There are 100 of them... but problem certainly not related to mapping
Code between sessionFactory.openSession() and session.close():


Transaction txLocal = session.beginTransaction();

while loop
- create the object

long t1 = System.currentTimeMillis();
// I tried to beginTransaction here but it was a bit slower.
session.save(patient);
//session.flush(); // removed for seems useless and slows even more
txLocal.commit();
long t2 = System.currentTimeMillis();
// I evaluate the needed time to save and commit every 100 records inserted
if (nbRecDone%100 == 0) System.out.println("Temps pour save = " + (t2-t1) +" msec");

end while

session.close is called outside the loop.

The result of the timing is at the end of the message.

Full stack trace of any exception that occurs:
no exception

Name and version of the database you are using:
Firebird 1.5.1 on MacosX. Running hibernate in an Eclipse app with the jdbc drivers v 1.5 - running on the same computer.


So the problem is that it takes initially 20 msec to save and commit one record and then goes up gradually to 180 msec!

I doubt this is a garbage collection problem in my loop, because I force a gc every 10 records and I can follow the size of the running application and it does not go up (it was slower when I let the system calls gc itself).

I use ehcache too. The size of the cache for this table is 1000.

// I delete all the records first.
Effacement de patient
Temps pour save = 20 msec
Temps pour save = 22 msec
Temps pour save = 35 msec
Temps pour save = 23 msec
Temps pour save = 41 msec
Temps pour save = 42 msec
Temps pour save = 51 msec
Temps pour save = 45 msec
Temps pour save = 39 msec
Temps pour save = 54 msec
Temps pour save = 93 msec
Temps pour save = 69 msec
Temps pour save = 73 msec
Temps pour save = 64 msec
Temps pour save = 68 msec
Temps pour save = 74 msec
Temps pour save = 94 msec
Temps pour save = 70 msec
Temps pour save = 72 msec
Temps pour save = 69 msec
Temps pour save = 79 msec
Temps pour save = 77 msec
Temps pour save = 76 msec
Temps pour save = 104 msec
Temps pour save = 112 msec
Temps pour save = 101 msec
Temps pour save = 99 msec
Temps pour save = 101 msec
Temps pour save = 128 msec
Temps pour save = 116 msec
Temps pour save = 101 msec
Temps pour save = 119 msec
Temps pour save = 114 msec
Temps pour save = 117 msec
Temps pour save = 125 msec
Temps pour save = 132 msec
Temps pour save = 127 msec
Temps pour save = 129 msec
Temps pour save = 133 msec
Temps pour save = 149 msec
Temps pour save = 160 msec
Temps pour save = 139 msec
Temps pour save = 153 msec
Temps pour save = 145 msec
Temps pour save = 148 msec
Temps pour save = 167 msec
Temps pour save = 167 msec
Temps pour save = 164 msec
Temps pour save = 156 msec
Temps pour save = 181 msec
Temps pour save = 180 msec
Temps pour save = 178 msec


Top
 Profile  
 
 Post subject:
PostPosted: Sat Sep 11, 2004 10:47 pm 
Hibernate Team
Hibernate Team

Joined: Tue Aug 26, 2003 12:50 pm
Posts: 5130
Location: Melbourne, Australia
http://blog.hibernate.org/cgi-bin/blosx ... 8/27#batch


Top
 Profile  
 
 Post subject: You are GREAT!!!
PostPosted: Sun Sep 12, 2004 6:54 am 
Newbie

Joined: Sat Sep 11, 2004 10:31 pm
Posts: 4
Gavin,

Thanks for being so fast to answer.

I read the interesting article. The only missing part of my code was the session.clear. I added this every 10 insertions and here is the result:

Effacement de patient
Temps pour save = 18 msec
Temps pour save = 11 msec
Temps pour save = 25 msec
Temps pour save = 18 msec
Temps pour save = 16 msec
Temps pour save = 129 msec // another mac app. started...
Temps pour save = 12 msec
Temps pour save = 13 msec
Temps pour save = 20 msec
Temps pour save = 16 msec
Temps pour save = 21 msec
Temps pour save = 18 msec
Temps pour save = 21 msec
Temps pour save = 15 msec
Temps pour save = 11 msec
Temps pour save = 16 msec
Temps pour save = 20 msec
Temps pour save = 17 msec
Temps pour save = 17 msec
Temps pour save = 25 msec
Temps pour save = 22 msec
Temps pour save = 10 msec
Temps pour save = 12 msec
Temps pour save = 19 msec
Temps pour save = 17 msec
Temps pour save = 18 msec
Temps pour save = 14 msec
Temps pour save = 12 msec
Temps pour save = 13 msec
Temps pour save = 20 msec
Temps pour save = 19 msec
Temps pour save = 15 msec
Temps pour save = 12 msec
Temps pour save = 21 msec
Temps pour save = 12 msec
Temps pour save = 19 msec
Temps pour save = 20 msec
Temps pour save = 264 msec // I opened the table from another app. to see how it was going (from a windows computer - IB expert).
Temps pour save = 13 msec
Temps pour save = 23 msec
Temps pour save = 15 msec
Temps pour save = 26 msec
Temps pour save = 14 msec
Temps pour save = 17 msec
Temps pour save = 12 msec
Temps pour save = 17 msec
Temps pour save = 12 msec
Temps pour save = 11 msec
Temps pour save = 11 msec
Temps pour save = 14 msec
Temps pour save = 49 msec // I opened another app. in MacOSX.
Temps pour save = 11 msec

So, now this is VERY good. I had not noticed the importance of this little clear() method.

Hibernate is NOT shitty code!

Great work and thanks again.

Patrice Drolet
Logiciels INFO-DATA inc.
http://www.infodata.ca


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.