Подтвердить что ты не робот

Что означает, когда MySQL находится в состоянии "Отправка данных"?

Что это значит, если запрос Mysql:

SHOW PROCESSLIST;

возвращает "Отправка данных" в столбце "Состояние"?

Я предполагаю, что это означает, что запрос выполнен, и MySQL отправляет данные "результат" клиенту, но мне интересно, почему он занимает так много времени (до часа).

Спасибо.

4b9b3361

Ответ 1

Это довольно вводящий в заблуждение статус. Его следует называть "чтение и фильтрация данных".

Это означает, что MySQL имеет некоторые данные, хранящиеся на диске (или в памяти), который еще не прочитан и отправлен. Это может быть сама таблица, индекс, временная таблица, отсортированный результат и т.д.

Если у вас есть таблица записей 1M (без индекса), для которой вам нужна только одна запись, MySQL по-прежнему будет выводить статус "отправка данных" во время сканирования таблицы, несмотря на то, что он еще ничего не отправил.

Ответ 2

В этом состоянии:

Нить чтение и обработка строк для SELECT и отправки данных клиенту.

Поскольку операции, происходящие во время этого состояния, имеют тенденцию выполнять большой объем доступа к диску (чтение).

Для этого требуется больше времени для завершения, а также долгое время в течение срока службы заданного запроса.