Spec-Zone.ru › MySQL 5.7

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

  • 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_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-5.7-en/performance-schema-processlist-table.html

Spec-Zone.ru

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