29.12.22.8 Таблица processlist
Список процессов MySQL показывает операции, которые в данный момент выполняются набором потоков, работающих в сервере. Таблица processlist является одним из источников информации о процессах. Сравнение этой таблицы с другими источниками см. в источниках информации о процессах.
К таблице processlist можно напрямую обратиться. Если у вас есть привилегия PROCESS, вы можете увидеть все потоки, даже те, которые принадлежат другим пользователям. В противном случае (без привилегии PROCESS), анонимные пользователи не имеют доступа к информации о потоках других пользователей, а анонимные пользователи не имеют доступа к информации о потоках.
Если системная переменная performance_schema_show_processlist включена, таблица processlist также служит основой для альтернативной реализации, которая используется в операторе SHOW PROCESSLIST. Подробности см. ниже в этом разделе.
Таблица processlist содержит строку для каждого процесса сервера:
mysql> SELECT * FROM performance_schema.processlist\G
*************************** 1. row ***************************
ID: 5
USER: event_scheduler
HOST: localhost
DB: NULL
COMMAND: Daemon
TIME: 137
STATE: Waiting on empty queue
INFO: NULL
*************************** 2. row ***************************
ID: 9
USER: me
HOST: localhost:58812
DB: NULL
COMMAND: Sleep
TIME: 95
STATE:
INFO: NULL
*************************** 3. row ***************************
ID: 10
USER: me
HOST: localhost:58834
DB: test
COMMAND: Query
TIME: 0
STATE: executing
INFO: SELECT * FROM performance_schema.processlist
...
В таблице processlist есть следующие столбцы:
-
IDИдентификатор подключения. Это то же самое значение, которое отображается в столбце
IdоператораSHOW PROCESSLIST, отображается в столбцеPROCESSLIST_IDтаблицы Performance Schemathreadsи возвращается функциейCONNECTION_ID()внутри потока. -
USERПользователь MySQL, который выполнил оператор. Значение
system userотносится к потоку, который не является клиентом, создан сервером для обработки задач внутри, например, поток обработчика отложенных строк или поток ввода-вывода или SQL, используемый на узлах реплики. Дляsystem userв столбцеHostне указан хост.unauthenticated userотносится к потоку, который стал связанным с подключением клиента, но для которого аутентификация пользователя клиента еще не произошла.event_schedulerотносится к потоку, который отслеживает запланированные события (см. Раздел 27.5, «Использование планировщика событий»).ПримечаниеЗначение
USER, равноеsystem 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. -
EXECUTION_ENGINEДвигатель выполнения запроса. Значение равно либо
PRIMARY, либоSECONDARY. Для использования с HeatWave Service и HeatWave, где движокPRIMARYравенInnoDB, а движокSECONDARYравен HeatWave (RAPID). Для MySQL Community Edition Server, MySQL Enterprise Edition Server (на локальном сервере) и HeatWave Service без HeatWave значение всегда равноPRIMARY.
В таблице processlist есть следующие индексы:
Первичный ключ по (
ID)
TRUNCATE TABLE не разрешен для таблицы processlist.
Как уже упоминалось, если системная переменная performance_schema_show_processlist включена, таблица processlist служит основой для альтернативной реализации других источников информации о процессах:
Оператор
SHOW PROCESSLIST.Команда mysqladmin processlist (которая использует оператор
SHOW PROCESSLIST).
Стандартная реализация SHOW PROCESSLIST итерирует активные потоки внутри менеджера потоков, удерживая глобальный мьютекс. Это приводит к негативным последствиям для производительности, особенно на загруженных системах. Альтернативная реализация SHOW PROCESSLIST основана на таблице Performance Schema processlist. Эта реализация запрашивает данные о действующих потоках из Performance Schema, а не из менеджера потоков, и не требует мьютекса.
Настройка MySQL влияет на содержимое таблицы processlist следующим образом:
-
Минимальная конфигурация:
Сервер MySQL должен быть сконфигурирован и собран с включённой интроспекцией потоков. Это значение по умолчанию; оно контролируется с помощью параметра
DISABLE_PSI_THREADCMake.Модуль Performance Schema должен быть включён при запуске сервера. Это значение по умолчанию; оно контролируется с помощью системной переменной
performance_schema.
После удовлетворения этой конфигурации,
performance_schema_show_processlistвключает или отключает альтернативную реализациюSHOW PROCESSLIST. Если минимальная конфигурация не удовлетворена, таблицаprocesslist(и, следовательно,SHOW PROCESSLIST) может не возвращать все данные. -
Рекомендуемая конфигурация:
-
Чтобы избежать игнорирования некоторых потоков:
Оставьте системную переменную
performance_schema_max_thread_instancesв её значении по умолчанию или установите её как минимум не меньше системной переменнойmax_connections.Оставьте системную переменную
performance_schema_max_thread_classesв её значении по умолчанию.
Чтобы избежать пустых значений некоторых столбцов
STATE, оставьте системную переменнуюperformance_schema_max_stage_classesв её значении по умолчанию.
Значение по умолчанию для этих параметров конфигурации -
-1, что приводит к автоматическому подбору размеров Performance Schema при запуске сервера. С указанными параметрами таблицаprocesslist(и, следовательно,SHOW PROCESSLIST) предоставляют полную информацию о процессах. -
Представленные выше параметры конфигурации влияют на содержимое таблицы processlist. Однако для данной конфигурации содержимое таблицы processlist не зависит от настройки performance_schema_show_processlist.
Альтернативная реализация списка процессов не применяется к таблице INFORMATION_SCHEMA PROCESSLIST или команде COM_PROCESS_INFO протокола MySQL клиент/сервер.
© 2025 Oracle
Licensed under the GPLv2 License.