maveric
Goto Top

MySQL Statement Network Traffic steigt ohne Grund

Moin,

ich habe mehr oder weniger lustiges Query Symptom. Man nehme ein umfangreiches Statement das in seiner Ausführungszeit 15 sek benötigt und 5 Sek Network Traffic on Top erzeugt. Das ist dem geschuldet, das ich eine doppelte Sortierung habe "ORDER BY X ASC, Y ASC". Die Gesamtmenge an rows die über bleiben sind ca. 0,5 Millionen. So weit so gut. Nehme ich jetzt das ORDER BY weg, geht wie erwartet die Query - Time auf 0,01Sek runter aber und jetzt kommt der Joke... die Netzwerk Time steigt auf 19-20 sek. so das letztendlich die gleiche Gesamtzeit benötigt wird. Es sind übrigens wieder 0,5 Millionen rows über das Netzwerk zu übertragen, also hieran kann es nicht liegen.

Meine Frage an euch, welche Ideen habt ihr, warum ohne Sortierung der Netzwerktraffic steigt? In meiner bunten Welt sollte die Query - Time sich ohne sortieren senken, was sie ja auch tut und die Netzwerk Time sollte gleich bleiben.

Viele Grüße
Maveric

Content-ID: 195743

Url: https://administrator.de/contentid/195743

Ausgedruckt am: 05.11.2024 um 04:11 Uhr

nxclass
nxclass 12.12.2012 aktualisiert um 14:29:51 Uhr
Goto Top
ist denn die Datenmenge auch erhöht welche über das Netzwerk fließt? - ich glaube nicht.

  • die Datenbank holt die Datensätze .. sortiert .. und "schupst" die Daten über das Netzwerk
  • die Datenbank holt die Daten "schupst" diese sofort über das Netzwerk
...ich schätze das einfach bei Punkt 2 die Daten in einem deutlich kleineren Cache gehalten werden bevor diese gesendet werden. Somit hast du einen Datentransfer schon während die DB noch am selektieren der Daten ist. Bei Punkt 1 ist die DB schon längst fertig mit selektieren (und sortieren) der Daten wenn diese gesendet werden.

... versuch mal ein "ORDER BY NULL" - übrigens auch hilfreich wenn nach einem GROUP keine Sortierung erfolgen soll.

EDIT: kann gut möglich sein das dies auch von der Client Software abhängt (handshake) - wie/mit was fragst du denn die DB ab ?
Maveric
Maveric 12.12.2012 um 14:48:00 Uhr
Goto Top
Das mit der Datenmenge ist die korrekte Antwort. Ich habe das grad mal durchgetestet und die Datenmenge insgesamt reduziert und den Netzwerktraffic der erzeugt wird bei beiden gemessen.

Effektiv ist es so, das wenn man sortiert schickt er während der 15 sek die die Query braucht schon 80% der Daten über das Netzwerk, so das nach dem Statement noch 2-3 sek für das verschicken der restlichen Daten über das Netzwerk benötigt werden.

Nimmt man das das Statement ohne sortieren, ist die Query so schnell fertig, das er 18 sek nur für den Netzwerktraffic braucht, weil er quasi erst nach dem Statement mit dem Datentransport anfängt.

Ich habe jetzt die Datenmenge noch ein klein wenig um ca 10% reduzieren können, was sich direkt auch in der Gesamtheit bemerkbar gemacht hat.

Vielen Dank für die Überlegung
Grüße Maveric