Spec-Zone.ru › MySQL 5.7

8.14.3 Общие состояния потоков

В следующем списке описаны значения потоков State, которые связаны с общей обработкой запросов, а не более специализированными операциями, такими как репликация. Многие из них полезны только для поиска ошибок в сервере.

  • After create

    Это происходит, когда поток создаёт таблицу (включая внутренние временные таблицы), в конце функции, которая создаёт таблицу. Этот статус используется даже в случае, если таблица не могла быть создана из-за какой-либо ошибки.

  • altering table

    Сервер выполняет операцию изменения ALTER TABLE на месте.

  • Analyzing

    Поток рассчитывает распределение ключей таблицы MyISAM (например, для ANALYZE TABLE).

  • checking permissions

    Поток проверяет, обладает ли сервер необходимыми привилегиями для выполнения запроса.

  • Checking table

    Поток выполняет операцию проверки таблицы.

  • cleaning up

    Поток обработав один запрос, готовится освободить память и сбросить некоторые переменные состояния.

  • committing alter table to storage engine

    Сервер завершил операцию изменения ALTER TABLE на месте и подтверждает результат.

  • closing tables

    Поток записывает изменённые данные таблицы на диск и закрывает используемые таблицы. Это должно быть быстрая операция. Если нет, проверьте, что у вас не заполнен диск и что диск не сильно загружен.

  • converting HEAP to ondisk

    Поток конвертирует внутреннюю временную таблицу из таблицы MEMORY в таблицу на диске.

  • copy to tmp table

    Поток обрабатывает запрос ALTER TABLE. Этот статус возникает после того, как таблица с новой структурой была создана, но до того, как строки были скопированы в неё.

    Для потока в этом состоянии Performance Schema может быть использован для получения информации о ходе операции копирования. См. Раздел 25.12.5, «Таблицы событий этапов Performance Schema».

  • Copying to group table

    Если у запроса разные критерии ORDER BY и GROUP BY, строки сортируются по группам и копируются во временную таблицу.

  • Copying to tmp table

    Сервер копирует данные во временную таблицу в памяти.

  • Copying to tmp table on disk

    Сервер копирует данные во временную таблицу на диске. Временный результат стал слишком большим (см. Раздел 8.4.4, «Использование внутренних временных таблиц в MySQL»). Вследствие этого, поток меняет временную таблицу с памяти на формат на диске для экономии памяти.

  • Creating index

    Поток обрабатывает ALTER TABLE ... ENABLE KEYS для таблицы MyISAM.

  • Creating sort index

    Поток обрабатывает запрос SELECT, который решается с помощью внутренней временной таблицы.

  • creating table

    Поток создаёт таблицу. Это включает создание временных таблиц.

  • Creating tmp table

    Поток создаёт временную таблицу в памяти или на диске. Если таблица создана в памяти, но позже конвертируется в таблицу на диске, то состояние во время этой операции — Copying to tmp table on disk.

  • deleting from main table

    Сервер выполняет первую часть операции удаления из нескольких таблиц. Он удаляет только из первой таблицы и сохраняет столбцы и смещения для удаления из других (ссылочных) таблиц.

  • deleting from reference tables

    Сервер выполняет вторую часть операции удаления из нескольких таблиц и удаляет соответствующие строки из других таблиц.

  • discard_or_import_tablespace

    Поток обрабатывает запрос ALTER TABLE ... DISCARD TABLESPACE или ALTER TABLE ... IMPORT TABLESPACE.

  • end

    Это происходит в конце, но до очистки запросов ALTER TABLE, CREATE VIEW, DELETE, INSERT, SELECT или UPDATE.

    В состоянии end могут происходить следующие операции:

    • Удаление записей кеша запросов после изменения данных в таблице

    • Запись события в бинарный лог

    • Освобождение буферов памяти, включая для BLOB

  • executing

    Поток начал выполнение запроса.

  • Execution of init_command

    Поток выполняет запросы в значении системной переменной init_command.

  • freeing items

    Поток выполнил команду. Некоторые освобождения элементов, выполняемые в этом состоянии, включают кеш запросов. Это состояние обычно следует за состоянием cleaning up.

  • FULLTEXT initialization

    Сервер готовится выполнить полнотекстовый поиск с использованием естественного языка.

  • init

    Это происходит перед инициализацией запросов ALTER TABLE, DELETE, INSERT, SELECT или UPDATE. Действия сервера в этом состоянии включают сброс бинарного лога, лога InnoDB и некоторые операции очистки кеша запросов.

  • Killed

    Кто-то отправил запрос KILL потоку, и он должен прервать выполнение в следующий раз, когда проверит флаг прерывания. Флаг проверяется в каждом главном цикле MySQL, но в некоторых случаях потоку может потребоваться немного времени для завершения. Если поток заблокирован другим потоком, прерывание вступит в силу, как только другой поток освободит блокировку.

  • logging slow query

    Поток записывает запрос в журнал медленных запросов.

  • login

    Начальное состояние потока соединения до успешной аутентификации клиента.

  • manage keys

    Сервер включает или отключает индекс таблицы.

  • Opening tables

    Поток пытается открыть таблицу. Это должна быть очень быстрая процедура, если не происходит что-то, препятствующее открытию. Например, запрос ALTER TABLE или запрос LOCK TABLE могут предотвратить открытие таблицы до завершения запроса. Также стоит проверить, что значение table_open_cache достаточно велико.

  • optimizing

    Сервер выполняет начальную оптимизацию запроса.

  • preparing

    Этот статус возникает во время оптимизации запроса.

  • preparing for alter table

    Сервер готовится выполнить операцию изменения ALTER TABLE на месте.

  • Purging old relay logs

    Поток удаляет не нужные файлы лога ретрансляции.

  • query end

    Этот статус возникает после обработки запроса, но до состояния freeing items.

  • Receiving from client

    Сервер считывает пакет от клиента. Это состояние называется Reading from net до MySQL 5.7.8.

  • Removing duplicates

    Запрос использовал SELECT DISTINCT таким образом, что MySQL не смог оптимизировать операцию distinct на ранней стадии. Из-за этого MySQL требует дополнительной стадии для удаления всех дублирующих строк перед отправкой результата клиенту.

  • removing tmp table

    Поток удаляет внутреннюю временную таблицу после обработки запроса SELECT. Это состояние не используется, если временная таблица не была создана.

  • rename

    Поток переименовывает таблицу.

  • rename result table

    Поток обрабатывает запрос ALTER TABLE, создал новую таблицу и переименовывает её для замены исходной таблицы.

  • Reopen tables

    Поток получил блокировку для таблицы, но после получения блокировки заметил, что структура таблицы изменилась. Он освободил блокировку, закрыл таблицу и пытается её снова открыть.

  • Repair by sorting

    Код восстановления использует сортировку для создания индексов.

  • Repair done

    Поток завершил многопоточное восстановление таблицы MyISAM.

  • Repair with keycache

    Код восстановления использует создание ключей по одному через кэш ключей. Это намного медленнее, чем Repair by sorting.

  • Rolling back

    Поток отменяет транзакцию.

  • Saving state

    Для операций с таблицей, таких как ремонт или анализ, поток сохраняет новое состояние таблицы в заголовке файла .MYI. Состояние включает в себя информацию, такую как количество строк, счётчик AUTO_INCREMENT и распределения ключей.

  • Searching rows for update

    Поток выполняет первую фазу для поиска всех совпадающих строк перед их обновлением. Это необходимо, если оператор UPDATE изменяет индекс, используемый для поиска вовлечённых строк.

  • Sending data

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

  • Sending to client

    Сервер отправляет пакет клиенту. Это состояние называлось Writing to net до MySQL 5.7.8.

  • setup

    Поток начинает операцию ALTER TABLE.

  • Sorting for group

    Поток выполняет сортировку для удовлетворения запроса GROUP BY.

  • Sorting for order

    Поток выполняет сортировку для удовлетворения запроса ORDER BY.

  • Sorting index

    Поток сортирует страницы индексов для более эффективного доступа во время оптимизации таблицы MyISAM.

  • Sorting result

    Для оператора SELECT это аналогично состоянию Creating sort index, но для невременных таблиц.

  • starting

    Первый этап в начале выполнения оператора.

  • statistics

    Сервер вычисляет статистику для разработки плана выполнения запроса. Если поток находится в этом состоянии длительное время, сервер, вероятно, ограничен диском и выполняет другую работу.

  • System lock

    Поток вызвал mysql_lock_tables(), и состояние потока не обновлялось с тех пор. Это очень общее состояние, которое может возникать по многим причинам.

    Например, поток запрашивает или ожидает системный или внешний блокировку таблицы. Это может произойти, когда InnoDB ожидает блокировку таблицы на уровне таблицы во время выполнения LOCK TABLES. Если это состояние вызывается запросами на внешние блокировки и вы не используете несколько серверов mysqld, которые обращаются к одним и тем же таблицам MyISAM, вы можете отключить внешние системные блокировки с помощью параметра --skip-external-locking. Однако внешние блокировки отключены по умолчанию, поэтому, вероятно, этот параметр не окажет никакого эффекта. Для SHOW PROFILE это состояние означает, что поток запрашивает блокировку (а не ждёт её).

  • update

    Поток готовится к началу обновления таблицы.

  • Updating

    Поток ищет строки для обновления и обновляет их.

  • updating main table

    Сервер выполняет первую часть обновления нескольких таблиц. Он обновляет только первую таблицу и сохраняет столбцы и смещения для использования при обновлении других (ссылочных) таблиц.

  • updating reference tables

    Сервер выполняет вторую часть обновления нескольких таблиц и обновляет совпадающие строки из других таблиц.

  • User lock

    Поток собирается запросить или ожидает консультативную блокировку, запрошенную с помощью вызова GET_LOCK(). Для SHOW PROFILE это состояние означает, что поток запрашивает блокировку (а не ждёт её).

  • User sleep

    Поток вызвал функцию SLEEP().

  • Waiting for commit lock

    FLUSH TABLES WITH READ LOCK ожидает блокировку подтверждения.

  • Waiting for global read lock

    FLUSH TABLES WITH READ LOCK ожидает глобальную блокировку чтения или глобальная системная переменная read_only устанавливается.

  • Waiting for tables

    Поток получил уведомление о том, что базовая структура таблицы изменилась, и ему необходимо переоткрыть таблицу, чтобы получить новую структуру. Однако для переоткрытия таблицы необходимо подождать, пока все остальные потоки не закроют таблицу.

    Это уведомление возникает, если другой поток использовал FLUSH TABLES или одно из следующих операторов для таблицы: FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE или OPTIMIZE TABLE.

  • Waiting for table flush

    Поток выполняет FLUSH TABLES и ожидает, пока все потоки закроют свои таблицы, или поток получил уведомление о том, что базовая структура таблицы изменилась, и ему нужно переоткрыть таблицу, чтобы получить новую структуру. Однако для переоткрытия таблицы необходимо подождать, пока все остальные потоки не закроют таблицу.

    Это уведомление возникает, если другой поток использовал FLUSH TABLES или одно из следующих операторов для таблицы: FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE или OPTIMIZE TABLE.

  • Waiting for lock_type lock

    Сервер ожидает получения блокировки THR_LOCK или блокировки из подсистемы блокировки метаданных, где lock_type указывает тип блокировки.

    Это состояние указывает на ожидание блокировки THR_LOCK:

    • Waiting for table level lock

    Эти состояния указывают на ожидание блокировки метаданных:

    • Waiting for event metadata lock

    • Waiting for global read lock

    • Waiting for schema metadata lock

    • Waiting for stored function metadata lock

    • Waiting for stored procedure metadata lock

    • Waiting for table metadata lock

    • Waiting for trigger metadata lock

    Сведения о показателях блокировки таблиц см. в разделе 8.11.1, «Внутренние методы блокировки». Сведения о блокировке метаданных см. в разделе 8.11.4, «Блокировка метаданных». Чтобы увидеть, какие блокировки препятствуют запросам на блокировку, используйте таблицы блокировки Performance Schema, описанные в разделе 25.12.12, «Таблицы блокировки Performance Schema».

  • Waiting on cond

    Общее состояние, в котором поток ожидает, пока условие не станет истинным. Конкретная информация о состоянии недоступна.

  • Writing to net

    Сервер отправляет пакет в сеть. Это состояние называлось Sending to client начиная с MySQL 5.7.8.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/general-thread-states.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API