Spec-Zone.ru › MySQL 8.4

10.14.3 Состояния потоков

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

  • After create

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

  • altering table

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

  • Analyzing

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

  • checking permissions

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

  • Checking table

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

  • cleaning up

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

  • closing tables

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

  • committing alter table to storage engine

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

  • converting HEAP to ondisk

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

  • copy to tmp table

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

    Для потока в этом состоянии Performance Schema может быть использован для получения информации о прогрессе операции копирования. Смотрите Раздел 29.12.5, «Performance Schema Stage Event Tables».

  • Copying to group table

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

  • Copying to tmp table

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

  • Copying to tmp table on disk

    Сервер копирует данные во временную таблицу на диске. Временный результат стал слишком большим (см. Раздел 10.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 могут происходить следующие операции:

    • Запись события в двоичный журнал

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

  • executing

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

  • Execution of init_command

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

  • freeing items

    Поток выполнил команду. Это состояние обычно следует за состоянием cleaning up.

  • FULLTEXT initialization

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

  • init

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

  • Killed

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

  • Locking system tables

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

  • logging slow query

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

  • login

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

  • manage keys

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

  • Opening system tables

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

  • Opening tables

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

    Для системных таблиц используется состояние Opening system tables.

  • optimizing

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

  • preparing

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

  • preparing for alter table

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

  • Purging old relay logs

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

  • query end

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

  • Receiving from client

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

  • 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

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

  • Searching rows for update

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

  • Sending data

    Это состояние теперь включено в состояние Executing.

  • Sending to client

    Сервер отправляет пакет клиенту.

  • 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 это состояние означает, что поток запрашивает блокировку (а не ожидает её).

    Для системных таблиц вместо состояния Locking system tables используется состояние.

  • 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 handler commit

    Поток ожидает подтверждения транзакции по сравнению с другими частями обработки запросов.

  • 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

    Сведения о маркерах блокировки таблиц см. в Разделе 10.11.1, «Методы внутренней блокировки». Сведения о блокировке метаданных см. в Разделе 10.11.4, «Блокировка метаданных». Чтобы увидеть, какие блокировки блокируют запросы блокировки, используйте таблицы блокировки Performance Schema, описанные в Разделе 29.12.13, «Таблицы блокировки Performance Schema».

  • Waiting on cond

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

  • Writing to net

    Сервер отправляет пакет в сеть.

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

Spec-Zone.ru

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