Spec-Zone.ru › MySQL 8.4

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 Schema threads и возвращаемое функцией 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_xxx протокола клиент-сервер и переменным статуса Com_xxx. См. Раздел 7.1.10, «Переменные состояния сервера».

  • 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_THREAD CMake.

    • Модуль 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.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/performance-schema-processlist-table.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API