Co to znaczy, jeśli kwerenda MySQL:
SHOW PROCESSLIST;
zwraca „Wysyłanie danych” w kolumnie Stan?
Wyobrażam sobie, że oznacza to, że zapytanie zostało wykonane i MySQL wysyła dane „wynikowe” do klienta, ale zastanawiam się, dlaczego zajmuje to tak dużo czasu (do godziny).
Dziękuję Ci.
Sending data
krok, który zajmuje trochę czasu po uruchomieniu,SHOW PROFILE
to czas spędzony w rzeczywistości należy do kroku wcześniejszego.Sending data
pokazuje się, że zajmuje to czas, jest to, że jest to błąd profilowania MySQL, czas pokazany tam należy do kroku wcześniej, który powinien byćExecuting query
lub coś podobnego. Oznacza to po prostu, że wykonanie zapytania zajmuje trochę czasu.Sending data
krok jest zwykle szybki, chyba że przesyłasz strumieniowo setki megabajtów danych.Odpowiedzi:
To jest dość mylący status. Powinien nazywać się „odczyt i filtrowanie danych”.
To znaczy że
MySQL
niektóre dane są przechowywane na dysku (lub w pamięci), które nie zostały jeszcze odczytane i przesłane. Może to być sama tabela, indeks, tabela tymczasowa, posortowane dane wyjściowe itp.Jeśli masz tabelę 1M rekordów (bez indeksu), do której potrzebujesz tylko jednego rekordu,
MySQL
podczas skanowania tabeli nadal będzie wyświetlał status „wysyłanie danych”, mimo że jeszcze nic nie wysłała.źródło
W tym stanie:
Dlatego ukończenie zajmuje więcej czasu, podobnie jak najdłużej działający stan w całym okresie istnienia danego zapytania.
źródło