15.7.7.31 Вывод списка процессов (SHOW PROCESSLIST)
SHOW [FULL] PROCESSLIST
Реализация схемы данных INFORMATION_SCHEMA для SHOW PROCESSLIST устарела и может быть удалена в будущих выпусках MySQL. Рекомендуется использовать реализацию Performance Schema для SHOW PROCESSLIST вместо нее.
Список процессов MySQL указывает операции, выполняемые в данный момент набором потоков, работающих внутри сервера. Выполнение оператора SHOW PROCESSLIST является одним из источников информации о процессах. Для сравнения этого оператора с другими источниками см. Источники информации о процессах.
Доступна альтернативная реализация для SHOW
PROCESSLIST, основанная на таблице Performance Schema processlist, которая, в отличие от стандартной реализации SHOW
PROCESSLIST, не требует мьютекса и имеет лучшие характеристики производительности. Подробности см. в Разделе 29.12.22.7, «Таблица processlist».
Если у вас есть привилегия PROCESS, вы можете видеть все потоки, даже те, которые принадлежат другим пользователям. В противном случае (без привилегии PROCESS) обычные пользователи имеют доступ к информации о своих собственных потоках, но не к потокам других пользователей, а анонимные пользователи не имеют доступа к информации о потоках.
Без ключевого слова FULL, SHOW PROCESSLIST отображает только первые 100 символов каждого оператора в поле Info.
Оператор SHOW PROCESSLIST очень полезен, если вы получаете сообщение об ошибке “слишком много подключений” и хотите выяснить, что происходит. MySQL резервирует одно дополнительное подключение для учетных записей, обладающих привилегией CONNECTION_ADMIN (или устаревшей привилегией SUPER), чтобы гарантировать, что администраторы всегда смогут подключаться и проверять систему (предполагая, что вы не предоставляете эту привилегию всем пользователям).
Потоки можно убить с помощью оператора KILL. См. Раздел 15.7.8.4, «Оператор KILL».
Пример вывода оператора SHOW PROCESSLIST:
mysql> SHOW FULL PROCESSLIST\G
*************************** 1. row ***************************
Id: 1
User: system user
Host:
db: NULL
Command: Connect
Time: 1030455
State: Waiting for source to send event
Info: NULL
*************************** 2. row ***************************
Id: 2
User: system user
Host:
db: NULL
Command: Connect
Time: 1004
State: Has read all relay log; waiting for the replica
I/O thread to update it
Info: NULL
*************************** 3. row ***************************
Id: 3112
User: replikator
Host: artemis:2204
db: NULL
Command: Binlog Dump
Time: 2144
State: Has sent all binlog to replica; waiting for binlog to be updated
Info: NULL
*************************** 4. row ***************************
Id: 3113
User: replikator
Host: iconnect2:45781
db: NULL
Command: Binlog Dump
Time: 2086
State: Has sent all binlog to replica; waiting for binlog to be updated
Info: NULL
*************************** 5. row ***************************
Id: 3123
User: stefan
Host: localhost
db: apollon
Command: Query
Time: 0
State: NULL
Info: SHOW FULL PROCESSLIST
Вывод SHOW PROCESSLIST содержит следующие столбцы:
-
IdИдентификатор подключения. Это то же значение, отображаемое в столбце
IDтаблицыINFORMATION_SCHEMAPROCESSLIST, в столбцеPROCESSLIST_IDтаблицы Performance Schemathreads, и возвращаемое функциейCONNECTION_ID()внутри потока. -
UserПользователь MySQL, который выдал оператор. Значение
system userотносится к потоку, не связанному с клиентом, порожденному сервером для обработки внутренних задач, например, потоку обработчика отложенных строк или потоку ввода-вывода (приемника) или SQL (применителя), используемому на хостах репликации. Дляsystem userхост не указан в столбцеHost.unauthenticated userотносится к потоку, который стал связан с подключением клиента, но для которого аутентификация пользователя клиента еще не произошла.event_schedulerотносится к потоку, который отслеживает запланированные события (см. Раздел 27.4, «Использование планировщика событий»).ПримечаниеЗначение
Usersystem userотличается от привилегииSYSTEM_USER. Первое обозначает внутренние потоки. Последнее отличает категории учетных записей системного пользователя и обычного пользователя (см. Раздел 8.2.11, «Категории учетных записей»). -
HostИмя хоста клиента, который выдал оператор (за исключением
system user, для которого нет хоста). Имя хоста для подключений TCP/IP сообщается в формате, чтобы упростить определение, какой клиент что делает.host_name:client_port -
dbБаза данных по умолчанию для потока или
NULL, если она не выбрана. -
CommandТип команды, которую поток выполняет от имени клиента, или
Sleep, если сеанс простаивает. Описания команд потоков см. в Разделе 10.14, «Проверка информации о потоке сервера (процессе)». Значение этого столбца соответствует командамCOM_протокола клиент/сервер и переменным состоянияxxxCom_. См. Раздел 7.1.10, «Переменные состояния сервера».xxx -
TimeВремя в секундах, в течение которого поток находится в своем текущем состоянии. Для репликационного SQL-потока значение является количеством секунд между отметкой времени последнего реплицированного события и реальным временем хоста реплики. См. Раздел 19.2.3, «Потоки репликации».
-
StateДействие, событие или состояние, указывающее, что делает поток. Описания значений
Stateсм. в Разделе 10.14, «Проверка информации о потоке сервера (процессе)».Большинство состояний соответствуют очень быстрым операциям. Если поток находится в определенном состоянии в течение многих секунд, это может указывать на проблему, требующую расследования.
-
InfoОператор, выполняемый потоком, или
NULL, если он не выполняет оператор. Оператор может быть тем, который был отправлен на сервер, или внутренним оператором, если оператор выполняет другие операторы. Например, если операторCALLвыполняет хранимую процедуру, которая выполняет операторSELECT, значениеInfoотображает операторSELECT.
© 2025 Oracle
Licensed under the GPLv2 License.