Java JAVA SQL-Query Performanz

Helios co.

Lt. Commander
Registriert
März 2005
Beiträge
1.863
Hallo,

ich möchte eine MySQL Datenbank auf eine Oracle DB migrieren. Im selben Zuge möchte ich einige Performace Tests machen.

D.h. ich will bestimmte Queries nehmen, ausführen und messen wie lange die Auführung dauert. Zum Schluss kommt ein Vergleich, und nötigenfalls muss ich einige Queries tunen.

Wie messe ich die Zeit für die Queryausführung mittels Java. Bis jetzt habe ich es auf dem üblichen Wege gemacht. Sprich
Code:
java.util.Date starttime
vor der Query und analog danach
Code:
java.util.Date endtime
. Dann halt end - start und feddisch.

Ist dieser Weg generell empfehlenswert, gibt es einen anderen? Die Datenbanken haben schließlich selbst einen Timer, kann ich mit java auf diesen zugreifen?

Bin generell für jeden Rat dankbar (Erfahrungsberichte, Paper etc. interessieren mich hierzu natürlich auch sehr!)
 
also wenn du in deinem code vergleichen willst geht das schon.

aber oracle bietet ne timin funktion.

machste SQLplus auf:

SET TIMING ON

das gibt aber die execution time plus die zeit die es dauert zum anzeigen aus.
die reine execution time gibts mit:

SET TIMING ON
SET AUTOTRACE TRACEONLY STATISTICS

aber mach dir mal keine sorge, oracle ist in jedem fall mindestens genauso schnell wie ein mysql... mindestens...

wie man die timings bei mysql macht ... ka ob die das so anbieten...

gruß
 
aber mach dir mal keine sorge, oracle ist in jedem fall mindestens genauso schnell wie ein mysql... mindestens...
Nein, nicht in jedem Fall. MySQL kann insbesondere bei kleinen Tabellen und wenig komplexen Abfragen durchaus schneller sein.

Bzgl. Timing: Wenn du einzelne sehr kurze Abfragen timest ist das mitunter nicht sehr genau (Unterschiede im Millisekundenbereich kannst du also nicht für Ernst nehmen). Problematisch sind auch die jeweiligen QueryCaches. Aussagekräftig wäre nur ein Vergleich mehrere unterschiedlicher Queries in einem Gesamtpaket wobei zuvor die Datenbanken in einen definierten Zustand gebracht werden (Neustart der Datenbank und einige von den Test-Abfragen abweichenden Dummyabfragen um die Dateicaches zu befüllen).
 
Nein, nicht in jedem Fall. MySQL kann insbesondere bei kleinen Tabellen und wenig komplexen Abfragen durchaus schneller sein.

Das entspricht auch dem, was ich bis etzt aus der Literatur entnehmen konnte. Es gibt auch überraschend viel zu diesem Thema, doch leider wird nie wirklich erklärt wie die Versuche gemacht wurden.

Bzgl. Timing: Wenn du einzelne sehr kurze Abfragen timest ist das mitunter nicht sehr genau
Das ist eben auch meine Befürchtung. Generell stellt sich insbesondere bei Oracle die Frage, wie ich eine möglichst hohe Last auf die DB legen kann. Denn ich vermute, dass Oracle insbesondere unter Last deutlich effektiver laufen wird als MySQL.

Schn mal vielen Dank für eure Tips! Bin weiterhin für jeden Rat offen und dankbar!
 
Zurück
Oben