Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

SQL-Traffic komprimieren

Empfohlene Antworten

Veröffentlicht

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!

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 ?

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

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

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!

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.

...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.

  • 2 Wochen später...

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 :)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.