29.12.22.7 Таблица 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.4, «Использование планировщика событий»).ПримечаниеЗначение
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 и HeatWave, где движокPRIMARYравенInnoDB, а движокSECONDARYравен HeatWave (RAPID). Для сервера MySQL Community Edition, сервера MySQL Enterprise Edition (на локальном сервере) и сервиса HeatWave без 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.