Я недавно обновился с hibernate 3.3.1.GA до hibernate 3.5.0, и у меня много проблем с производительностью. В качестве теста я добавил около 8000 сущностей в свою БД (что, в свою очередь, приводит к сохранению других сущностей). Эти объекты сохраняются в пакетах по 20, так что транзакции не слишком велики по соображениям производительности.
При использовании hibernate 3.3.1.GA все 8000 объектов сохраняются примерно за 3 минуты. При использовании hibernate 3.5.0 он запускается медленнее, чем в hibernate 3.3.1. Но это становится все медленнее и медленнее. Около 4000 объектов иногда требуют 5 минут, чтобы сохранить пакет из 20. Если я затем перехожу на консоль mysql и вручную набираю оператор вставки из общего журнала запросов mysql, половина из них работает идеально за 0,00 секунды. И половина из них занимает много времени (возможно, 40 секунд) или время ожидания с «ОШИБКА 1205 (HY000): превышено время ожидания блокировки; попробуйте перезапустить транзакцию» из MySQL.
Что-то изменилось в управлении транзакциями в hibernate в версии 3.5.0, о котором я должен знать? Единственное, что я изменил, чтобы испытать эти непригодные проблемы с производительностью, это заменить следующие файлы jar hibernate 3.3.1.GA: 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 с новым выпуском hibernate 3.5.0 hibernate3 .jar and javassist-3.9.0.GA.jar.
Спасибо.