carookee - group communication for you
Home / JavaForum / JDBC
Infos   |   Features   |   Gold-Edition   |   Kundenservice   
java
  Übersicht
  Forum
Beginner
Java allgemein
JDBC
JNI
Networking
Online-Ressourcen
Swing + AWT
XML
Meckerecke
  Mitglieder
LOGIN





· Passwort vergessen
· Kostenlos anmelden
  Information
  Demo
  Features
  Im Vergleich
  Anmeldung
SUCHE
Beiträge, Foren oder Verfasser finden:
  Kundenservice
  Impressum
  Datenschutz
  AGB
Status
5.802 User online
1 User eingeloggt
 

Beiträge
   Antworten     Neuer Beitrag    

Beitrag 11 von 277 (4%) |<   <   >   >|

Autor j23
Datum 14.11.05, 12:16
Betreff Hibernate + Spring + SQL Server => Performanceprobleme :((


Hallo,

meine Frage richtet sich vor allem an alle, die sich mit Hibernate (und womöglich auch mit Spring) gut
auskennen, jedoch ist natürlich ein Tipp von jedem wilkommen, der eine Idee hätte :)

Ein Überblick über das Problem:

Wir haben eine Spring-basierte Webapplikation, die Hibernate (zusammen mit dem Spring-Support für diesen Mapper) verwendet, als DB setzen wir Oracle 9i ein. Alles funktioniert hervorragend, die Leistung mit Oracle ist sehr zufriedenstellend, Schreib- und Leseoperationen auf der DB sind sehr schnell.

Wir haben einen Auftrag bekommen, die Applikation an die Zusammenarbeit mit MS SQL Server anzupassen (wir verwenden die Version 2000). Praktisch betreffen die Änderungen in der Applikation Modifikationen von Hibernate Mapping Dateien und den einsatz eines anderen JDBC-Treibers, alles andere bleibt so wie es war.

Das Problem betrifft die Leistung der Applikation im Moment, wenn sie mit SQL Server arbeitet. Die Leistung sinkt dramatisch – sogar 10fach! Wir protokollieren die Dauer der wichtigsten Operation (dies ist ein Schreiben in die DB von 3 Gruppen von Objekten, dann drei Leseoperationen – d.h. 3Mal ein flush() und 3mal ein refresh()). Während in der Oracle-Version eine solche Schreiboperation lediglich 300 ms in Anspruch nimmt, dauert dasselbe beim SQL Server über 3 Sekunden!

Hier ein Überblick über die Softwareversionen, die wir dabei verwenden:
  1. Spring – 1.2.3
  2. Hibernate - 3.0.5
  3. JDBC-Treiber für SQL Server:
wir haben verschiedene ausprobiert, es gab aber nie einen Unterschied in der Leistung:
  • INET Merlia TDS (kommerziell)
  • jTDS (sourceforge.net) 1.1 i 1.2
  • JDBC Treiber für SQL Server 2005 beta 1 von Microsoft (beta 2 funktioniert nicht,
weil ab dieser Version eine restriktive Politik bezüglich der Datentypen eingeführt wurde -
da wir in unserer DB für nummerische Typen NUMERIC immer einsetzen, macht
das Probleme beim neuen Treiber)
4. MS SQL Server 2000 – Version 8.0.x
5. DataSource und Connection Pooling – wir verwenden eine eigene Klasse zur Realisierung
der Connection Pooling, aber es ist schwierig zu behaupten, dass dies eine Ursache sein könnte. Übrigens
haben wir auch schon mal eine DataSource-Klasse von Microsoft benutzt, ohne Erfolg.

Was haben wir als eine potentielle Ursache ausgeschlossen:

  1. Die Datenbank an sich selbst – generell soll ja SQL Server schneller als Oracle sein, hier sehen wir keine Ursache – wir haben die einzelnen Operationen protokolliert (im SQL Profiler) und es war zu sehen, dass die Ausführung von SQL Anweisungen selbst schnell ging, es gab aber merkwürdige Pausen zwischen einzelnen Aufrufen

  2. JDBC-Treiber - trotz verschiedenartiger Kombinationen mit Treibern, deren Versionen und Parametern wurde die Leistung nicht verbessert

Was wir behaupten:
  1. Hibernate – wir haben Vergleichstests über reine JDBC gemacht und da hat SQL Server sehr schnell funktioniert, schneller als Oracle, dies würde darauf hindeuten, dass Hibernate schuldig ist

  2. Spring und dessen Webkomponenten - wir haben unsere Junit-Tests bezüglich der Leistung protokolliert
und es war zu sehen, dass es keine Unterschiede zwischen den beiden Datenbanken gibt. Dies läßt uns vermuten,
dass irgendwelche Webmechanismen von Spring einen Einfluss darauf haben könnten (auch wenn das seltsam klingt) – Filter, Interceptor, oder viell. Transaktionsmechanismus.

Ich weiss, dass es vielleicht schwierig ist, aus dieser groben Beschreibung etwas zu folgen, ich habe versucht, das Problem möglichst kompakt darzustellen mit der Hoffnung, dass vielleicht jemand eine Idee hat, was unser Problem sein kann.

Mit freundlichen Grüßen

J.



 Auf diesen Beitrag antworten
 Neuen Beitrag verfassen


|<   <   >   >|

                                                                                                                                                                                                                           

Impressum  · Datenschutz  · AGB  · Infos  · Presse
Ein modernes Forum: teamturn.com