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
User oder E-Mail
Passwort
·
Passwort vergessen
·
Kostenlos anmelden
Information
Demo
Features
Im Vergleich
Anmeldung
SUCHE
Beiträge, Foren oder Verfasser finden:
Kundenservice
Impressum
Datenschutz
AGB
Status
4.092 User online
1 User eingeloggt
Beiträge
Beginner
Java allgemein
JDBC
JNI
Networking
Online-Ressourcen
Swing + AWT
XML
Meckerecke
Antworten
Neuer Beitrag
Gesamtdarstellung
Detaildarstellung
Einzeldarstellung
Threaddarstellung
Beitrag 267 von 277 (96%)
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:
Spring 1.2.3
Hibernate - 3.0.5
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:
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
JDBC-Treiber - trotz verschiedenartiger Kombinationen mit Treibern, deren Versionen und Parametern wurde die Leistung nicht verbessert
Was wir behaupten:
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
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