Общие состояния потоков
В этой статье описываются основные общие состояния потоков. Более подробные списки, относящиеся к отложенным вставкам, репликации, кэшу запросов и планировщику событий, приведены в:
- Состояния потоков планировщика событий
- Состояния потоков кэша запросов
- Состояния потоков мастера
- Состояния потоков подключения ведомого
- Состояния потоков ввода-вывода ведомого
- Состояния потоков SQL ведомого
Они соответствуют значениям STATE, указанным оператором SHOW PROCESSLIST или в таблице Information Schema PROCESSLIST, а также значению PROCESSLIST_STATE, указанному в таблице Performance Schema threads
| Значение | Описание |
|---|---|
| После создания | Функция, создавшая (или пытавшаяся создать) таблицу (временную или постоянную), только что завершилась. |
| Анализ | Расчёт распределения ключей таблицы, например, при выполнении инструкции ANALYZE TABLE. |
| Проверка разрешений | Проверка достаточности разрешений для выполнения инструкции. |
| Проверка таблицы | Проверка таблицы. |
| Очистка | Подготовка к сбросу переменных состояния и освобождению памяти после выполнения команды. |
| Закрытие таблиц | Запись изменений на диск и закрытие таблицы. Это состояние сохранится только если диск заполнен или нагрузка очень высокая. |
| Преобразование HEAP в Aria | Преобразование внутренней временной таблицы MEMORY в дисковую временную таблицу Aria. |
| Преобразование HEAP в MyISAM | Преобразование внутренней временной таблицы MEMORY в дисковую временную таблицу MyISAM. |
| Копирование в временную таблицу | Новая таблица создана в рамках инструкции ALTER TABLE, и строки готовятся к копированию в неё. |
| Копирование в групповую таблицу | Сортировка строк по группам и копирование во временную таблицу, что происходит, когда в инструкции есть разные критерии GROUP BY и ORDER BY. |
| Копирование во временную таблицу | Копирование во временную таблицу в памяти. |
| Копирование во временную таблицу на диске | Копирование во временную таблицу на диске, так как результат слишком большой, чтобы поместиться в память. |
| Создание индекса | Обработка инструкции ALTER TABLE ... ENABLE KEYS для таблицы Aria или MyISAM. |
| Создание индекса сортировки | Обработка инструкции SELECT, использующей внутреннюю временную таблицу. |
| Создание таблицы | Создание таблицы (временной или постоянной). |
| Создание временной таблицы | Создание временной таблицы (в памяти или на диске). |
| Удаление из основной таблицы | Удаление из первой таблицы в многотабличном удалении, сохранение столбцов и смещений для использования при удалении из других таблиц. |
| Удаление из таблиц-ссылок | Удаление соответствующих строк из вторичных таблиц-ссылок в рамках многотабличного удаления. |
| discard_or_import_tablespace | Обработка инструкции ALTER TABLE ... IMPORT TABLESPACE или ALTER TABLE ... DISCARD TABLESPACE. |
| Конец | Состояние перед окончательной очисткой инструкции ALTER TABLE, CREATE VIEW, DELETE, INSERT, SELECT или UPDATE. Может включать очистку кэша запросов или запись в бинарный журнал или журнал InnoDB. |
| Выполнение | Выполнение инструкции. |
| Выполнение init_command | Выполнение инструкций, указанных опцией --init_command клиента mariadb. |
| Заполнение таблицы схемы | В базе данных information_schema строится таблица. |
| Освобождение элементов | Освобождение элементов из кэша запросов после выполнения команды. Обычно следует за состоянием cleaning up. |
| Сброс таблиц | Выполнение инструкции FLUSH TABLES и ожидание закрытия таблиц другими потоками. |
| Инициализация FULLTEXT | Подготовка к запуску полнотекстового поиска full-text. |
| Инициализация | Подготовка к выполнению инструкции ALTER TABLE, DELETE, INSERT, SELECT или UPDATE. Может включать очистку кэша запросов или запись в бинарный журнал или журнал InnoDB. |
| Прервано | Поток прервётся в следующий раз, когда проверит флаг прерывания. Требует ожидания освобождения всех блокировок. |
| Заблокировано | Запрос заблокирован другим запросом. |
| Логирование медленных запросов | Запись инструкции в журнал медленных запросов. |
| NULL | Состояние, используемое для SHOW PROCESSLIST. |
| Вход | Поток соединения ещё не прошёл аутентификацию. |
| Управление ключами | Включение или выключение индекса таблицы. |
| Открытие таблицы[ц] | Попытка открыть таблицу. Обычно очень быстро, если не достигнут лимит, заданный переменной table_open_cache, или не выполняется ALTER TABLE или LOCK TABLE. |
| Оптимизация | Сервер выполняет начальную оптимизацию запроса. |
| Подготовка | Состояние, возникающее во время оптимизации запроса. |
| Удаление устаревших релейных журналов | Удаляются ненужные релейные журналы. |
| Конец запроса | Обработка запроса завершена, но элементы ещё не освобождены (состояние freeing items). |
| Чтение файла | Сервер читает файл (например, во время LOAD DATA INFILE). |
| Чтение из сети | Сервер читает сетевой пакет. |
| Удаление дубликатов | Удаление дублирующихся строк перед отправкой клиенту. Происходит, когда SELECT DISTINCT используется таким образом, что операция DISTINCT не может быть оптимизирована на более раннем этапе. |
| Удаление временной таблицы | Удаление внутренней временной таблицы после обработки инструкции SELECT. |
| Переименование | Переименование таблицы. |
| Переименование таблицы результатов | Переименование таблицы, которая является результатом инструкции ALTER TABLE, создавшей новую таблицу. |
| Повторное открытие таблиц | Таблица повторно открывается после того, как поток получил блокировку, но структура таблицы изменилась, поэтому блокировка была освобождена. |
| Ремонт с помощью сортировки | Индексы создаются с использованием сортировки. Значительно быстрее, чем связанное Repair with keycache. |
| Ремонт завершён | Многопоточный ремонт завершён. |
| Ремонт с кэшем ключей | Индексы создаются через кэш ключей, по одному. Значительно медленнее, чем связанное Repair by sorting. |
| Откат | Откат транзакции. |
| Сохранение состояния | Сохранение нового состояния таблицы. Например, после анализа таблицы MyISAM, распределения ключей, количества строк и т. д. сохраняются в файле .MYI. |
| Поиск строк для обновления | Поиск строк, соответствующих условиям, перед выполнением UPDATE, что необходимо, когда UPDATE изменит индекс, используемый для UPDATE. |
| Отправка данных | Отправка данных клиенту в рамках обработки инструкции SELECT. Часто самое длительное состояние из-за относительно медленных обращений к диску, которые могут потребоваться. |
| Настройка | Настройка операции ALTER TABLE. |
| Сортировка по группе | Сортировка в рамках инструкции GROUP BY |
| Сортировка по порядку | Сортировка в рамках инструкции ORDER BY |
| Сортировка индекса | Сортировка страниц индекса в рамках операции оптимизации таблицы. |
| Сортировка результата | Обработка инструкции SELECT с использованием не временной таблицы. |
| Статистика | Вычисление статистики для определения плана выполнения запроса. Обычно кратковременное состояние, если сервер не ограничен диском. |
| Системная блокировка | Запрос или ожидание внешней блокировки для определённой таблицы. Двигатель хранения определяет тип внешней блокировки. Например, двигатель хранения MyISAM использует файловые блокировки. Однако внешние блокировки MyISAM отключены по умолчанию из-за значения переменной skip_external_locking по умолчанию. Транзакционные двигатели хранения, такие как InnoDB, также регистрируют транзакцию или инструкцию с координатором транзакций MariaDB, пока в этом состоянии потока. См. MDEV-19391 для получения дополнительной информации. |
| Блокировка таблицы | Запрос внутренней блокировки таблицы после получения внешней блокировки таблицы. Это состояние потока происходит после состояния потока Системная блокировка. |
| Обновление | Начинается обновление таблицы. |
| Обновление | Поиск и обновление строк в таблице. |
| Обновление основной таблицы | Обновление первой таблицы в многотабличном обновлении и сохранение столбцов и смещений для использования в других таблицах. |
| Обновление таблиц-ссылок | Обновление вторичных (ссылочных) таблиц в многотабличном обновлении. |
| Обновление статуса | Это состояние возникает после завершения выполнения запроса. Если время выполнения запроса превышает long_query_time, то Slow_queries увеличивается, а если включён журнал медленных запросов, то запрос регистрируется. Если включён плагин SERVER_AUDIT, то запрос также регистрируется в журнале аудита на этом этапе. Если включён плагин userstats, то на этом этапе также обновляются статистические данные о ЦП. |
| Блокировка пользователя | Запрос или ожидание консультативной блокировки из вызова GET LOCK(). Для SHOW PROFILE означает только запрос блокировки. |
| Ожидание пользователя | Выполнен вызов SLEEP(). |
| Ожидание блокировки фиксации |
FLUSH TABLES WITH READ LOCK ждёт блокировку фиксации или инструкция, приводящая к явной или неявной фиксации, ждёт освобождения блокировки чтения. Это состояние называлось Waiting for all running commits to finish в более ранних версиях. |
| Ожидание глобальной блокировки чтения | Ожидание глобальной блокировки чтения. |
| Ожидание блокировки таблицы | Внешняя блокировка получена, внутренняя блокировка запрошена. Происходит после состояния System lock. В более ранних версиях это называлось Table lock. |
| Ожидание блокировки xx | Ожидание получения блокировки типа xx. |
| Ожидание условия | Ожидание наступления неопределенного условия. |
| Запись в сеть | Запись пакета в сеть. |
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают точку зрения MariaDB или любой другой стороны.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/general-thread-states/