Lausi Geschrieben 22. Juni 2006 Teilen Geschrieben 22. Juni 2006 Hallo Leute! Vielleicht kann mir jemand bei folgendem Problem helfen: Es handelt sich um eine Client/Server-Architektur, bei der die Datenbank (MySQL 4.0) von der Anwendung (in C# implementiert) getrennt auf verschiedenen Rechnern läuft. Der Datenbankserver soll zentral stehen und mehrere Clients sollen von außen über das Internet zugreifen. Durch die große Menge an SQL-Traffic, die übertragen werden muß, entstehen längere Verzögerungen. :schlaf: Meine Idee war den Traffic irgendwie zu komprimieren bevor er übertragen wird!? Kann mir dazu jemand einen Hinweis geben ob das überhaupt möglich ist und wenn ja wie Danke im voraus! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Joe Kinley Geschrieben 28. Juni 2006 Teilen Geschrieben 28. Juni 2006 Wird wohl kaum moeglich sein... muesste naemlich als Plugin gehen... weiss nicht ob das geht. Aber oft hilft es wenn man die Applikation dahingehend anpasst dass man die Anzahl der Querys minimiert. Frueher hab ich einen Query gemacht und pro Datensatz darin in einer Loop neue Querys mit diesen Daten gemacht hab... sowas dauert natuerlich ewig lang. Wenn man es schafft alle Informationen in nur einer Query zu holen (Per Joins, Unterabfragen, zwischentabellen.. whatever halt) dann ist die Datenrate minimal.... Waere das denn ein Vorschlag ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 28. Juni 2006 Teilen Geschrieben 28. Juni 2006 Komprimieren geht nicht. man muss die Businesslogik anpassen in c# und in den sql statements. SQL falsch entwickelt ist nicht performant. ich stand am anfang meiner Ausbildung vor dem gleichen problem und habe mit meiner Lösung, täglich eine ersparnis von 15 minuten je client erreicht. Bei mir war die internetleitung, ISDN, die software PowerBuilder und es waren ca. 15 clients Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 28. Juni 2006 Teilen Geschrieben 28. Juni 2006 Optimieren ist natürlich das beste, beim Java JDBC Treiber gibt es aber die Möglichkeit die Option useCompression auf true zu setzen, dann wird der Trafik zlib komprimiert. Musst du mal schauen ob es das für die .NET Schnittstelle auch gibt. Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Lausi Geschrieben 28. Juni 2006 Autor Teilen Geschrieben 28. Juni 2006 Danke für die bisherigen Antworten! @Joe Kinley: Klar bringt das optimieren der Anfragen sicher einiges, aber wie du schon erwähnt hast dauert das ziemlich lange. Vor allem da ich nicht in allen Bereichen der Anwendung Ahnung habe, weil diese von verschiedenen Entwicklern implementiert wird. Und wenn ich die Anfragen minimiere (durch Unterabfragen,usw.), dabei aber die gleichen Datensätze anfordere, ändert sich bestimmt auch nicht der Traffic an sich, oder? @baba007: Das habe ich befürchtet. War auch nur eine erste Idee mit dem Komprimieren und wäre sicher eine schnelle Lösung gewesen. @Jaraz: useCompression klingt interessant! Ich werde da mal nachforschen ob da was einzustellen geht! Sollte sonst noch jemand eine Idee haben, immer raus damit! Gruß Lausi! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Joe Kinley Geschrieben 29. Juni 2006 Teilen Geschrieben 29. Juni 2006 Nunja... ich meine es halt so, dass man unnoetige Connects auf die Datenbank vermeiden sollte. Wenn du zum Beispiel einen Datensatz holst mit 100 Zeilen, und in einem Loop fuer jede Zeile noch eine neue Abfrage machst, sind das 101 Connects (und die dauern). Wenn du allerdings ein grosses Statement baust, mit Joins und Subselects und den ganzen Klumbatsch auch in einem durchgang holen kannst hast du auch nur 1 Connect. Das sind die Zeitfresser die man desoefteren mal in Applikationen sieht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
grueni Geschrieben 29. Juni 2006 Teilen Geschrieben 29. Juni 2006 ...mit Joins und Subselects... Er benutzt MySql 4.0, da gibbet keine Subselects. @Lausi Versuch erst mal rauszufinden, an welchen Stellen genau die Anwendung lahmt. Vielleicht können wir dir dann mit nem konkreten Beispiel beim "frisieren" helfen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Lausi Geschrieben 13. Juli 2006 Autor Teilen Geschrieben 13. Juli 2006 Hi Leute! Also, da mein ganzes "rumgewurschtel" an der Anwendung noch nicht den richtigen Erfolg gebracht hat, schlag ich Versuchsweise mal eine andere Richtung ein. Terminaldienste! Damit muß ich den SQL-Traffic nicht über das WAN übertragen, sondern lediglich die Bildinformationen sowie Tastatur- und Maussteuerung. Mal schauen wie performant diese Sache ist Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.