# Zeitliche Optimierung - andere Strategie?



## le_manchot (2. Nov 2008)

Hallo,

mein Programm fragt regelmäßig Daten aus einer MySQL Datenbank ab. Bei jeder Abfrage verzögert das Programm enorm.

Nun ist es so, dass ich eine Klasse Verbindung habe, die 
- das Laden des Treibers,
- den Verbindungsaufbau
- Abfragen und Updates
- und das Beenden der Verbindung übernimmt.

Da in den Datenbanken nur wenige Datensätze sind, passiert die Verzögerung nicht durch das query. Viel mehr vermute ich, dass das Problem beim Laden des Treibers und im Verbindungsaufbau besteht.

Die o.g. vier Schritte werden vor jeder Abfrage ausgeführt, d.h. vor jeder Abfrage wird der Treiber neu geladen und die Verbindung aufgebaut.

Gehe ich möglicherweise strategisch völlig falsch an die Sache ran? Ist es ratsam, bereits in der Klasse mit der main-Methode den Treiber zu laden und eine offene Verbindung zu halten, derer sich die Funktionen anderer Objekte dann bedienen? 

Dank und Gruß


----------



## kama (2. Nov 2008)

Hallo,


			
				le_manchot hat gesagt.:
			
		

> Hallo,
> 
> mein Programm fragt regelmäßig Daten aus einer MySQL Datenbank ab. Bei jeder Abfrage verzögert das Programm enorm.


Hier wäre meine Erste Frage: Was heißt "enorm" im Vergleich zu was?




			
				le_manchot hat gesagt.:
			
		

> Nun ist es so, dass ich eine Klasse Verbindung habe, die
> - das Laden des Treibers,
> - den Verbindungsaufbau
> - Abfragen und Updates
> ...


Hm. Du hast also einen Class-Loader geschrieben, der die Klassen für die Verbindung jedesmal macht...Weiterhin steht hier "vermute"....
Messen ist hier das einzige was etwas bringt....



			
				le_manchot hat gesagt.:
			
		

> Die o.g. vier Schritte werden vor jeder Abfrage ausgeführt, d.h. vor jeder Abfrage wird der Treiber neu geladen und die Verbindung aufgebaut.


Woher weißt Du das ?

MfG
Karl Heinz Marbaise


----------



## le_manchot (2. Nov 2008)

kama hat gesagt.:
			
		

> Hier wäre meine Erste Frage: Was heißt "enorm" im Vergleich zu was?



Ich befülle eine JTable-Komponente mit Daten aus der Datenbank. Es dauert etwa zwei Sekunden, bis der Treiber geladen ist und eine Abfrage beginnt.
Mit "enorm" meine ich die Verzögerung im Vergleich zu einem zweidimensionalen Array gleicher Größe.

Vielleicht ist eine Datenbank aber auch einfach nicht die passende Quelle, um eine JTable damit zu füllen. Jedenfalls ist die Verzögerung so stark, dass man mit dem Scrollbalken nicht ordentlich arbeiten kann.
Möglicherweise hat jemand mal etwas ähnliches getestet? Ansonsten muss ich wohl mal im swing-Unterforum fragen.



			
				kama hat gesagt.:
			
		

> le_manchot hat gesagt.:
> 
> 
> 
> ...


Ich lasse für jeden erfolgreich zu Ende gebrachten Schritt eine Meldung in der Konsole ausgeben.


----------



## le_manchot (2. Nov 2008)

kama hat gesagt.:
			
		

> Hier wäre meine Erste Frage: Was heißt "enorm" im Vergleich zu was?



Ich befülle eine JTable-Komponente mit Daten aus der Datenbank. Es dauert etwa zwei Sekunden, bis der Treiber geladen ist und eine Abfrage beginnt.
Mit "enorm" meine ich die Verzögerung im Vergleich zu einem zweidimensionalen Array gleicher Größe.

Vielleicht ist eine Datenbank aber auch einfach nicht die passende Quelle, um eine JTable damit zu füllen. Jedenfalls ist die Verzögerung so stark, dass man mit dem Scrollbalken nicht ordentlich arbeiten kann.
Möglicherweise hat jemand mal etwas ähnliches getestet? Ansonsten muss ich wohl mal im swing-Unterforum fragen.



			
				kama hat gesagt.:
			
		

> le_manchot hat gesagt.:
> 
> 
> 
> ...


Ich lasse für jeden erfolgreich zu Ende gebrachten Schritt eine Meldung in der Konsole ausgeben.

Vielen Dank.


----------



## Guest (4. Nov 2008)

Versuchs mal mit einem Connection-Pool.


----------



## Guest (11. Nov 2008)

Anonymous hat gesagt.:
			
		

> Versuchs mal mit einem Connection-Pool.



Eine wunderbare Technik. Danach habe ich gesucht. Danke


----------

