Команда SHOW [FULL] PROCESSLIST
показывает, какие потоки запущены
в настоящий момент. Эту
информацию также можно получить
при помощи команды mysqladmin
processlist. Если у вас привилегия
SUPER, можно
просматривать все потоки, в
противном случае - только свои
потоки. See Раздел 4.5.5, «Синтаксис команды KILL». Если не
используется параметр
FULL, будут показаны
только первые 100 символов каждого
запроса.
Начиная с 4.0.12, MySQL сообщает имя
хоста для TCP/IP соединений как
имя_хоста:клиентский_порт
с тем, чтобы было проще понять,
какой клиент чем занят.
Эта команда очень полезна, если
выдается сообщение об ошибке 'too
many connections' (слишком много
соединений) и необходимо
выяснить, что происходит. MySQL
резервирует одно дополнительное
соединение для клиента с
привилегией SUPER, чтобы у
вас всегда была возможность войти
в систему и произвести проверку
(предполагается, что вы не станете
раздавать эту привилегию всем
своим пользователям).
Некоторые состояния обычно можно
увидеть в mysqladmin processlist.
Checking table Поток
осуществляет [автоматическую]
проверку таблицы.
Closing tables Означает, что
поток записывает измененные
данные таблиц на диск и
закрывает использующиеся
таблицы. Выполнение этой
операции должно произойти
быстро. Если на нее уходит
значительное время, убедитесь,
что диск не переполнен или что
диск не используется слишком
интенсивно.
Connect Out Подчиненный
компьютер, подсоединенный к
головному компьютеру.
Copying to tmp table on disk Набор
временных результатов превысил
tmp_table_size, и теперь
поток изменяет таблицу
временных данных,
расположенную в памяти, на
дисковую таблицу, чтобы
сохранить память.
Creating tmp table Поток
создает временную таблицу,
чтобы хранить часть
результатов для запроса.
deleting from main table При
запуске первой части удаления
нескольких таблиц удаление
производится только начиная с
первой таблицы.
deleting from reference tables При
запуске второй части удаления
нескольких таблиц удаляются
совпадающие строки из других
таблиц.
Flushing tables Поток
запускает команду FLUSH
TABLES и ожидает, пока все
потоки закроют свои таблицы.
Killed Кто-то направил
команду на закрытие потока, и
поток будет закрыт при
следующей проверке флага
закрытия. Флаг проверяется при
каждом основном цикле в MySQL, но в
некоторых случаях закрытие
потока может занять некоторое
время. Если поток заблокирован
другим потоком, закрытие будет
произведено сразу после того,
как другой поток снимет
блокировку.
Sending data Поток
обрабатывает строки для
оператора SELECT, а
также направляет данные
клиенту.
Sorting for group Поток
осуществляет сортировку в
соответствии с GROUP BY.
Sorting for order Поток
осуществляет сортировку в
соответствии с ORDER BY.
Opening tables Это просто
означает, что поток пытается
открыть таблицу. Такая
процедура осуществляется
довольно быстро, если что-либо
не мешает открытию. Например,
команды ALTER TABLE или
LOCK TABLE могут помешать
открытию таблицы, пока
выполнение команды не будет
завершено.
Removing duplicates Запрос
использовал команду SELECT
DISTINCT таким образом, что MySQL
не смог произвести оптимизацию
на начальном этапе. Поэтому MySQL
перед отправкой результатов
клиенту должен выполнить
дополнительное удаление всех
дублирующихся строк.
Reopen table Поток
заблокировал таблицу, но
обнаружил, что после блокировки
структура таблицы изменилась.
Он снял блокировку, закрыл
таблицу и теперь пытается
повторно ее открыть.
Repair by sorting Код
восстановления использует
сортировку для создания
индексов.
Repair with keycache Код
восстановления использует
создание ключей один за другим,
через кэш ключей. Это намного
медленнее, чем Repair by
sorting.
Searching rows for update Поток
осуществляет первую фазу -
производит поиск всех
совпадающих строк, чтобы затем
обновить их. Это действие
необходимо выполнить, если
команда UPDATE изменяет
индекс, который используется
для поиска указанных строк.
Sleeping Поток ожидает,
когда клиент направит ему новую
команду.
System lock Поток ожидает
получения внешней системной
блокировки таблицы. Если не
используется несколько
серверов mysqld, которые
получают доступ к одним и тем же
таблицам, системную блокировку
можно отключить при помощи
параметра
--skip-external-locking.
Upgrading lock Обработчик
INSERT DELAYED пытается
заблокировать таблицу, чтобы
вставить строки.
Updating Поток
производит поиск строк, которые
необходимо обновить, и
обновляет их.
User Lock Поток ожидает
GET_LOCK().
Waiting for tables Поток
получил уведомление, что
структура таблицы изменилась, и
ему необходимо повторно
открыть таблицу, чтобы получить
новую структуру. Чтобы повторно
открыть таблицу, он должен
подождать, пока ее не закроют
все остальные потоки. Это
уведомление выдается, если
другой поток воспользовался
командой FLUSH TABLES или к
таблице была применена одна из
следующих команд: FLUSH TABLES
table_name, ALTER TABLE,
RENAME TABLE, REPAIR
TABLE, ANALYZE TABLE или
OPTIMIZE TABLE. Обработчик
INSERT DELAYED завершил
работу со всеми вставками и
ожидает новые.
Большинство состояний - это очень быстрые операции. Если потоки остаются в любом из этих состояний на протяжении большого количества секунд, то, возможно, возникла какая-то проблема, которую следует устранить.
Существует еще несколько
состояний, не упомянутых выше, но
большинство из них полезны только
для поиска ошибок в mysqld.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
© 1995-2005 MySQL AB. All rights reserved.
