Was bedeutet es, wenn die MySQL-Abfrage:
SHOW PROCESSLIST;
gibt "Daten senden" in der Spalte "Status" zurück?
Ich kann mir vorstellen, dass dies bedeutet, dass die Abfrage ausgeführt wurde und MySQL "Ergebnis" -Daten an den Client sendet, aber ich frage mich, warum dies so lange dauert (bis zu einer Stunde).
Danke dir.
Sending data
einen Schritt sehen, der nach dem Ausführen einigeSHOW PROFILE
Zeit in Anspruch nimmt, gehört die verbrauchte Zeit tatsächlich zum vorherigen Schritt.Sending data
als zeitaufwändig herausstellt, ist, dass es sich um einen MySQL-Profilierungsfehler handelt. Die dort angezeigte Zeit gehört zum vorherigen Schritt, der sein sollteExecuting query
oder etwas Ähnliches. Es bedeutet nur, dass die Ausführung Ihrer Abfrage einige Zeit in Anspruch nimmt.Sending data
Der Schritt ist normalerweise schnell, es sei denn, Sie streamen Hunderte von Megabyte Daten.Antworten:
Dies ist ein ziemlich irreführender Status. Es sollte als "Lesen und Filtern von Daten" bezeichnet werden.
Dies bedeutet, dass
MySQL
einige Daten auf der Festplatte (oder im Speicher) gespeichert sind, die noch gelesen und gesendet werden müssen. Dies kann die Tabelle selbst, ein Index, eine temporäre Tabelle, eine sortierte Ausgabe usw. sein.Wenn Sie eine 1M-Datensatztabelle (ohne Index) haben, von der Sie nur einen Datensatz benötigen,
MySQL
wird beim Scannen der Tabelle weiterhin der Status "Daten senden" ausgegeben, obwohl noch nichts gesendet wurde.quelle
In diesem Staat:
Aus diesem Grund dauert der Abschluss länger und der am längsten laufende Status über die Lebensdauer einer bestimmten Abfrage.
quelle