Spec-Zone.ru › MySQL 9.2

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 Schema threads и возвращается функцией 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_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 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_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-9.2-en/performance-schema-processlist-table.html

Spec-Zone.ru

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