25.12.16.3 Таблица processlist
Таблица processlist автоматически создаётся в Performance Schema при новых установках MySQL 5.7.39 или выше. Она также создаётся автоматически при обновлении.
Список процессов 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относится к потоку, который отслеживает запланированные события (см. раздел 23.4, “Использование планировщика событий”).ПримечаниеЗначение
USER, равноеsystem user, отличается от привилегии. Первое обозначает внутренние потоки. Второе различает категории пользователей системы и обычных пользователей (см. ). -
HOSTИмя хоста клиента, выполняющего оператор (за исключением
system user, для которого хост отсутствует). Имя хоста для подключений TCP/IP сообщается в формате, чтобы облегчить определение клиента.host_name:client_port -
DBБаза данных по умолчанию для потока или
NULL, если она не выбрана. -
COMMANDТип команды, которую поток выполняет от имени клиента, или
Sleep, если сеанс простаивает. Описания команд потоков см. в разделе 8.14, “Просмотр информации о потоке сервера (процессе)”. Значение этого столбца соответствует командамCOM_протокола клиент/сервер и переменным состоянияxxxCom_. См. раздел 5.1.9, “Переменные состояния сервера”xxx -
TIMEВремя в секундах, которое поток находится в текущем состоянии. Для потока SQL репликации значение представляет количество секунд между меткой времени последнего события репликации и реальным временем узла репликации. См. раздел 16.2.3, “Потоки репликации”.
-
STATEДействие, событие или состояние, указывающие, что делает поток. Описания значений
STATEсм. в разделе 8.14, “Просмотр информации о потоке сервера (процессе)”.Большинство состояний соответствуют очень быстрым операциям. Если поток остается в данном состоянии в течение многих секунд, может быть проблема, которую необходимо расследовать.
-
INFOОператор, выполняемый потоком, или
NULL, если он не выполняет оператор. Оператор может быть отправленным на сервер или внутренним оператором, если оператор выполняет другие операторы. Например, если операторCALLвыполняет хранимую процедуру, выполняющую операторSELECT, значениеINFOпоказывает операторSELECT. -
EXECUTION_ENGINEДвигатель выполнения запроса. Значение либо
PRIMARY, либоSECONDARY. Для использования с MySQL HeatWave Service и HeatWave, где двигательPRIMARYравенInnoDB, а двигательSECONDARYравен HeatWave (RAPID). Для MySQL Community Edition Server, MySQL Enterprise Edition Server (на локальной установке) и MySQL HeatWave Service без HeatWave значение всегда равноPRIMARY. Этот столбец был добавлен в MySQL 8.0.29.
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.