Что это значит, если запрос Mysql:
SHOW PROCESSLIST;
возвращает «Отправка данных» в столбце «Состояние»?
Я предполагаю, что это означает, что запрос был выполнен, и MySQL отправляет данные «результата» клиенту, но мне интересно, почему это занимает так много времени (до часа).
Спасибо.
Sending data
как шаг, который требует времени после запуска,SHOW PROFILE
то затраченное время фактически относится к предыдущему шагу.Sending data
занимает время, заключается в том, что это ошибка профилирования MySQL, показанное время относится к предыдущему шагу, который должен бытьExecuting query
или что-то подобное. Это просто означает, что ваш запрос требует времени для выполнения.Sending data
шаг обычно быстрый, если вы не передаете сотни мегабайт данных.Ответы:
Это довольно вводящий в заблуждение статус. Это должно называться «чтение и фильтрация данных».
Это означает, что
MySQL
на диске (или в памяти) хранятся некоторые данные, которые еще предстоит прочитать и переслать. Это может быть сама таблица, индекс, временная таблица, отсортированный вывод и т. Д.Если у вас есть таблица записей 1M (без индекса), для которой вам нужна только одна запись,
MySQL
вы все равно будете выводить статус «отправка данных» во время сканирования таблицы, несмотря на то, что она еще ничего не отправила.источник
В этом состоянии:
Вот почему для его завершения требуется больше времени, и поэтому он длится дольше всего в течение времени существования данного запроса.
источник