Spec-Zone.ru › MySQL 9.2

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».

  • 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 могут происходить следующие операции:

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

    • Освобождение буферов памяти, включая для 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, но в некоторых случаях потоку может потребоваться немного времени, чтобы завершиться. Если поток заблокирован другим потоком, прерывание вступит в силу, как только другой поток освободит блокировку.

  • 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

    Для операций с таблицей, таких как ремонт или анализ, поток сохраняет новое состояние таблицы в заголовке файла .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-9.2-en/general-thread-states.html

Spec-Zone.ru

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