Geschwindigkeitsproblem

29/03/2009 - 20:14 von Christian Mauerer | Report spam
Hallo,

ich habe bei einer meiner Anwendungen ein erhebliches
Geschwindigkeitsproblem.
Und zwar geht es bei einer Abfrage darum, Daten aus ca. 100 Tabellen
auszulesen.

Ich hatte es bis jetzt so gemacht, dass in einer Schleife der Anwendung die
100 Tabellen der Reihe nach abgefragt wurden.
Das war eigentlich in ca 4 Sekunden erledigt.
Ist vielleicht nicht die sauberste Lösung.

Nun hatte ich das Problem, dass manche Anwendungen über eine recht schlechte
Netzwerkleitung mit der Datenbank verbunden waren. DLS 1000.
Da brauchte diese Abfrage ca. 8 Minuten.
Aus diesem Grund hatte ich nun die ganzen Abfragen der 100 Tabellen in eine
StoredProcedure gepakt.
Diese wird dann ein einziges Mal von der Anwendung aufgerufen und die
Ergebnisse aus den 100 Tabellen in einer temporàren Tabelle gespeichert,
welche dann über einen SqlDataAdapter abgerufen wird.
Die Ausführung der StoredProcecure über ein gute Netzwerkanbindung dauert
etwas 1 - 2 Sekunden.
Wenn ich diese StoredProcedure nun über das DSL 1000 aufrufe, dann dauert es
nun wieder ca 8 Minuten.
Die Auslastung am Server liegt bei ca 2 Prozent. Beim Client, auf welchem
die Anwendung ausgeführt wird etwa 1 - 2 Prozent. Das Netzwerk hat ebenfalls
keine Auslastung.

Die Daten, welche von der Stored Procedure zurückgeliefert werden sind
wenige Bytes. Also von den effektiven Daten.

Sonst arbeiten alle Methode zum Speichern und Auslesen der Daten ohne
Probleme und auch doch recht flott. Speichern dauert so etwa 10 Sekunden.
Und das sind viel mehr Daten, als über die Stored Procedure ausgelesen
werden.

Hat jemand eine Idee, woran das liegen kann?

Vielen Dank und schöne Grüße
Christian
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
30/03/2009 - 09:36 | Warnen spam
Hallo Christian,

"Christian Mauerer" schrieb:

Und zwar geht es bei einer Abfrage darum, Daten aus ca. 100 Tabellen auszulesen.



bißchen viel, meinst Du nicht?

Ich hatte es bis jetzt so gemacht, dass in einer Schleife der Anwendung die 100 Tabellen der Reihe nach abgefragt wurden.



Was genau machst Du denn da?

Nun hatte ich das Problem, dass manche Anwendungen über eine recht schlechte Netzwerkleitung mit der Datenbank verbunden waren.
DLS 1000.
Da brauchte diese Abfrage ca. 8 Minuten.



Wie viele Daten wurden denn da übertragen?

Wenn ich diese StoredProcedure nun über das DSL 1000 aufrufe, dann dauert es nun wieder ca 8 Minuten.
...
Die Daten, welche von der Stored Procedure zurückgeliefert werden sind wenige Bytes. Also von den effektiven Daten.



Sicher? Das klingt schon nach einem Problem mit der Datenübertragung (und zwar
einem massiven Problem, wenn das 8 Minuten dauert)

Ohne Code kann man da aber nicht viel sagen. Prüf nochmal, ob Du nicht doch
noch irgendwo den Code drin hast, der die 100 Tabellen durchgeht, Daten làdt,
...

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen