Самым критичным в этой команде является столбец состояний, и в mysql перечисленные состояния в основном следующие:
Таблица для проверки Проверяю технический лист (это автоматически). Закрытие столов Данные, изменённые в таблице, смываются на диск, а использованная таблица закрывается. Это быстрая операция, если нет — проверьте, заполнено ли место на диске или диск под нагрузкой. Соединяйтесь Подчинённый сервер репликации подключается к основному серверу. Копирование в таблицу tmp на диске Поскольку временный набор результатов превышает tmp_table_size, временная таблица преобразуется из встроенной памяти в дисковое хранилище для сохранения памяти. Создание таблицы tmp Создаётся временная таблица для хранения некоторых результатов запросов. Удаление из основной таблицы Сервер выполняет первую часть многостольного удаления и только что удалил первую таблицу. Удаление из таблиц ссылок Сервер выполняет вторую часть многостольного удаления — удаление записей из других таблиц. Столы для промыва Делаю FLUSH TABLES, жду, пока другие потоки закроют таблицу данных. Убит Если запрос на ликвидацию отправляется в поток, поток проверяет флаг и отклоняет следующий запрос. MySQL проверяет наличие флагов убийства в каждом основном цикле, хотя в некоторых случаях поток может ненадолго прерываться. Если поток заблокирован другим потоком, запрос на закрытие вступит в силу сразу после снятия блокировки. Заперто Заблокировано другими запросами. Передача данных Запись запроса SELECT обрабатывается, пока результаты отправляются клиенту. Сортировка для группы Сортировка для GROUP BY. Сортировка по порядку Сортировка ведётся для ORDER BY. Начальные таблицы Этот процесс должен быть быстрым, если только не мешают другие факторы. Например, таблица данных не может быть открыта другим потоком до выполнения оператора ALTER TABLE или LOCK TABLE. Пытаюсь открыть стол. Удаление дубликатов Выполняется запрос SELECT DISTINCT, но MySQL не может оптимизировать дублирующиеся записи на предыдущем этапе. Поэтому MySQL должен снова удалить дублирующиеся записи перед отправкой результатов клиенту. Откройте стол Фиксация на таблице получается, но его необходимо изменить после изменения структуры таблицы. Уже снял блокировку, закрыл даташит и пытается снова открыть таблицу данных. Ремонт путём сортировки Инструкция fix — сортировать для создания индекса. Ремонт с помощью keycache Директива fix заключается в использовании индексного кэша для создания новых индексов по одному. Сортировка будет медленнее, чем Ремонт. Поиск в строках для обновления Для обновления определяются подходящие записи. Это должно быть сделано до того, как UPDATE изменит соответствующую запись. Сон Жду, когда клиент отправит новый запрос. Системный замок Жду, чтобы получить внешний системный замок. Если одновременно не работают серверы mysqld, запрашивающие одну и ту же таблицу, внешние системные блокировки можно запретить, добавив параметр –skip-external-locking. Модернизация замка INSERT DELAYED пытается заставить таблицу блокировки для вставки новой записи. Обновление Поиск совпадающих записей и их модификация. Пользовательский замок ждёт GET_LOCK(). Обслуживая столики Поток был уведомлен, что структура технического листа была изменена и должна быть вновь открыта для получения новой структуры. Затем, чтобы вновь открыть таблицу данных, нужно дождаться, пока все остальные потоки закроют таблицу. Это уведомление происходит в следующих случаях: FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE или OPTIMIZE TABLE. Ожидание вставки обработчика INSERT DELAYED обработал все ожидающие вставки и ждёт нового запроса. Большинство состояний соответствуют быстрым операциям, если поток остаётся в одном и том же состоянии несколько секунд, может возникнуть проблема, которую нужно проверить. |