2010-04-14 5 views
1

J'ai récemment mis à jour de Hibernate 3.3.1.GA à Hibernate 3.5.0 et j'ai beaucoup de problèmes de performance. En tant que test, j'ai ajouté environ 8000 entités à ma base de données (qui à leur tour entraînent l'enregistrement d'autres entités). Ces entités sont sauvegardées par lots de 20 afin que les transactions ne soient pas trop importantes pour des raisons de performances. Lors de l'utilisation de Hibernate 3.3.1.GA, toutes les entités 8000 sont enregistrées en environ 3 minutes. En utilisant Hibernate 3.5.0, il démarre plus lentement qu'avec Hibernate 3.3.1. Mais il devient plus lent et plus lent. À environ 4 000 entités, il faut parfois 5 minutes pour enregistrer un lot de 20. Si je passe ensuite à une console mysql et que je saisis manuellement une instruction d'insertion dans le journal de requête mysql, la moitié fonctionne parfaitement en 0,00 secondes. Et la moitié d'entre eux prend beaucoup de temps (peut-être 40 secondes) ou timeout avec "ERROR 1205 (HY000): Lock wait timeout dépassé, essayez de redémarrer la transaction" à partir de MySQL.Hibernate 3.5.0 provoque des problèmes de performances extrêmes

Est-ce que quelque chose a changé dans la gestion des transactions d'hibernate dans la version 3.5.0 dont je devrais être au courant? La seule chose que j'ai changé pour rencontrer ces problèmes de performances inutilisables est de remplacer les fichiers JAR hibernate 3.3.1.GA suivants: com.springsource.org.hibernate-3.3.1.GA.jar, com.springsource.org.hibernate.annotations- 3.4.0.GA.jar, com.springsource.org.hibernate.annotations.common-3.3.0.ga.jar, com.springsource.javassist-3.3.0.ga.jar avec la nouvelle version hibernate 3.5.0 hibernate3 .jar et javassist-3.9.0.GA.jar.

Merci.

Répondre

0

Même si je peux voir quelques choses liées à la gestion des transactions dans Hibernate 3.5.0-Final, ce que vous décrivez n'est certainement pas normal (et je ne trouve pas de open issue à propos d'un tel problème). Donc, bien qu'il soit difficile de dire quoi que ce soit sans voir de code, si la seule chose que vous avez changé est la version des artefacts Hibernate, alors il y a très probablement une régression quelque part.

Je propose de créer un test case SANS aucune substance de printemps pour isoler tout problème potentiel avec Hibernate (que vous aurez besoin de toute façon de signaler le problème).

Questions connexes