29.12.22.8 Таблица threads
Таблица threads содержит строку для каждого серверного потока. Каждая строка содержит информацию о потоке и указывает, включены ли для него мониторинг и историческая регистрация событий:
mysql> SELECT * FROM performance_schema.threads\G
*************************** 1. row ***************************
THREAD_ID: 1
NAME: thread/sql/main
TYPE: BACKGROUND
PROCESSLIST_ID: NULL
PROCESSLIST_USER: NULL
PROCESSLIST_HOST: NULL
PROCESSLIST_DB: mysql
PROCESSLIST_COMMAND: NULL
PROCESSLIST_TIME: 418094
PROCESSLIST_STATE: NULL
PROCESSLIST_INFO: NULL
PARENT_THREAD_ID: NULL
ROLE: NULL
INSTRUMENTED: YES
HISTORY: YES
CONNECTION_TYPE: NULL
THREAD_OS_ID: 5856
RESOURCE_GROUP: SYS_default
EXECUTION_ENGINE: PRIMARY
CONTROLLED_MEMORY: 1456
MAX_CONTROLLED_MEMORY: 67480
TOTAL_MEMORY: 1270430
MAX_TOTAL_MEMORY: 1307317
TELEMETRY_ACTIVE: NO
...
При инициализации Performance Schema он заполняет таблицу threads на основе существующих потоков. После этого при каждом создании сервером потока добавляется новая строка.
Значения столбцов INSTRUMENTED и HISTORY для новых потоков определяются содержимым таблицы setup_actors. Информацию о том, как использовать таблицу setup_actors для управления этими столбцами, см. в разделе 29.4.6, «Предварительное фильтрация по потоку».
Удаление строк из таблицы threads происходит при завершении потоков. Для потока, связанного с сеансом клиента, удаление происходит при завершении сеанса. Если у клиента включена автоматическая повторная подключа, и сеанс подключается повторно после разрыва соединения, сеанс связывается с новой строкой в таблице threads, которая имеет другое значение PROCESSLIST_ID. Начальные значения INSTRUMENTED и HISTORY для нового потока могут отличаться от значений исходного потока: таблица setup_actors может быть изменена за это время, и если значение INSTRUMENTED или HISTORY для исходного потока было изменено после инициализации строки, изменение не переносится на новый поток.
Вы можете включить или выключить мониторинг потоков (то есть, будут ли instrumented события, выполняемые потоком) и историческую регистрацию событий. Чтобы управлять начальными значениями INSTRUMENTED и HISTORY для новых фоновых потоков, используйте таблицу setup_actors. Для управления этими аспектами существующих потоков установите столбцы INSTRUMENTED и HISTORY строк таблицы threads. (Дополнительную информацию о условиях, при которых происходит мониторинг потоков и историческая регистрация событий, см. в описаниях столбцов INSTRUMENTED и HISTORY.)
Для сравнения столбцов таблицы threads с именами, начинающимися с префикса PROCESSLIST_, с другими источниками информации о процессах, см. Источники информации о процессах.
Для источников информации о потоках, отличных от таблицы threads, информация о потоках других пользователей отображается только в том случае, если текущий пользователь имеет привилегию PROCESS. Это не относится к таблице threads; все строки отображаются любому пользователю, имеющему привилегию SELECT для таблицы. Пользователи, которые не должны иметь возможности видеть потоки других пользователей, обращаясь к таблице threads, не должны получать привилегию SELECT для нее.
Таблица threads имеет следующие столбцы:
-
THREAD_IDУникальный идентификатор потока.
-
NAMEНазвание, связанное с кодом инструментирования потока в сервере. Например,
thread/sql/one_connectionсоответствует функции потока в коде, отвечающем за обработку подключения пользователя, аthread/sql/main— функцииmain()сервера. -
TYPEТип потока, либо
FOREGROUND, либоBACKGROUND. Потоки пользовательских подключений — фоновые потоки. Потоки, связанные с внутренней деятельностью сервера, — фоновые потоки. Примеры — внутренние потокиInnoDB, потоки “binlog dump”, отправляющие информацию репликам, а также потоки ввода-вывода репликации и SQL-потоки. -
PROCESSLIST_IDДля фонового потока (связанного с подключением пользователя) это идентификатор подключения. Это то же значение, которое отображается в столбце
IDтаблицыINFORMATION_SCHEMAPROCESSLIST, отображаемый в столбцеIdвыводаSHOW PROCESSLISTи возвращаемый функциейCONNECTION_ID()в рамках потока.Для фонового потока (не связанного с подключением пользователя)
PROCESSLIST_IDравноNULL, поэтому значения не уникальны. -
PROCESSLIST_USERПользователь, связанный с фоновым потоком, и
NULLдля фонового потока. -
PROCESSLIST_HOSTИмя хоста клиента, связанного с фоновым потоком, и
NULLдля фонового потока.В отличие от столбца
HOSTтаблицыINFORMATION_SCHEMAPROCESSLISTили столбцаHostвыводаSHOW PROCESSLIST, столбецPROCESSLIST_HOSTне включает номер порта для TCP/IP-соединений. Чтобы получить эту информацию из Performance Schema, включите инструментирование сокетов (которое по умолчанию не включено) и просмотрите таблицуsocket_instances:mysql>
SELECT NAME, ENABLED, TIMEDFROM performance_schema.setup_instrumentsWHERE NAME LIKE 'wait/io/socket%';+----------------------------------------+---------+-------+ | NAME | ENABLED | TIMED | +----------------------------------------+---------+-------+ | wait/io/socket/sql/server_tcpip_socket | NO | NO | | wait/io/socket/sql/server_unix_socket | NO | NO | | wait/io/socket/sql/client_connection | NO | NO | +----------------------------------------+---------+-------+ 3 rows in set (0.01 sec) mysql>UPDATE performance_schema.setup_instrumentsSET ENABLED='YES'WHERE NAME LIKE 'wait/io/socket%';Query OK, 3 rows affected (0.00 sec) Rows matched: 3 Changed: 3 Warnings: 0 mysql>SELECT * FROM performance_schema.socket_instances\G*************************** 1. row *************************** EVENT_NAME: wait/io/socket/sql/client_connection OBJECT_INSTANCE_BEGIN: 140612577298432 THREAD_ID: 31 SOCKET_ID: 53 IP: ::ffff:127.0.0.1 PORT: 55642 STATE: ACTIVE ... -
PROCESSLIST_DBБаза данных по умолчанию для потока или
NULL, если она не выбрана. -
PROCESSLIST_COMMANDДля фоновых потоков тип команды, которую поток выполняет от имени клиента, или
Sleep, если сеанс простаивает. Для описаний команд потока см. Раздел 10.14, «Просмотр информации о потоке сервера (процессе)». Значение этого столбца соответствует командамCOM_протокола клиент-сервер и переменным состоянияxxxCom_. См. Раздел 7.1.10, «Переменные состояния сервера»xxxФоновые потоки не выполняют команды от имени клиентов, поэтому этот столбец может быть
NULL. -
PROCESSLIST_TIMEВремя в секундах, в течение которого поток находится в текущем состоянии. Для реплицируемого SQL-потока значение представляет собой количество секунд между меткой времени последнего реплицированного события и реальным временем узла реплики. См. Раздел 19.2.3, «Потоки репликации».
-
PROCESSLIST_STATEДействие, событие или состояние, указывающее, что делает поток. Для описаний значений
PROCESSLIST_STATEсм. Раздел 10.14, «Просмотр информации о потоке сервера (процессе)». Если значение равноNULL, поток может соответствовать сеансу простоя клиента или его работа не инструментируется этапами.Большинство состояний соответствуют очень быстрым операциям. Если поток остается в определенном состоянии в течение многих секунд, возможно, есть проблема, требующая расследования.
-
PROCESSLIST_INFOЗапрос, который выполняет поток, или
NULL, если он не выполняет ни одного запроса. Запрос может быть отправленным серверу или внутренним запросом, если запрос выполняет другие запросы. Например, если запросCALLвыполняет хранимую процедуру, которая выполняет запросSELECT, значениеPROCESSLIST_INFOпоказывает запросSELECT. -
PARENT_THREAD_IDЕсли этот поток является подпотоком (созданным другим потоком), это значение
THREAD_IDпорождающего потока. -
ROLEНе используется.
-
INSTRUMENTEDИнструментированы ли события, выполняемые потоком. Значение равно
YESилиNO.-
Для фоновых потоков начальное значение
INSTRUMENTEDопределяется тем, соответствует ли учетная запись пользователя, связанная с потоком, строке в таблицеsetup_actors. Сопоставление основано на значениях столбцовPROCESSLIST_USERиPROCESSLIST_HOST.Если поток порождает подпоток, сопоставление повторяется для строки таблицы
threads, созданной для подпотока. Для фоновых потоков
INSTRUMENTEDпо умолчанию равноYES.setup_actorsне используется, поскольку для фоновых потоков нет связанного пользователя.Для любого потока его значение
INSTRUMENTEDможет быть изменено в течение его жизненного цикла.
Для того чтобы отслеживались события, выполняемые потоком, должны соблюдаться следующие условия:
Потребитель
thread_instrumentationв таблицеsetup_consumersдолжен бытьYES.Столбец
threads.INSTRUMENTEDдолжен бытьYES.Отслеживание выполняется только для тех событий потока, которые созданы инструментами, имеющими столбец
ENABLED, установленный вYESв таблицеsetup_instruments.
-
-
HISTORYВести ли журнал исторических событий для потока. Значение равно
YESилиNO.-
Для фоновых потоков начальное значение
HISTORYопределяется тем, соответствует ли учетная запись пользователя, связанная с потоком, строке в таблицеsetup_actors. Сопоставление основано на значениях столбцовPROCESSLIST_USERиPROCESSLIST_HOST.Если поток порождает подпоток, сопоставление повторяется для строки таблицы
threads, созданной для подпотока. Для фоновых потоков
HISTORYпо умолчанию равноYES.setup_actorsне используется, поскольку для фоновых потоков нет связанного пользователя.Для любого потока его значение
HISTORYможет быть изменено в течение его жизненного цикла.
Для того чтобы велся журнал исторических событий для потока, должны соблюдаться следующие условия:
Соответствующие потребители, связанные с историей, в таблице
setup_consumersдолжны быть включены. Например, для ведения журнала событий ожидания в таблицахevents_waits_historyиevents_waits_history_longнеобходимо включить соответствующих потребителейevents_waits_historyиevents_waits_history_long.Столбец
threads.HISTORYдолжен бытьYES.Журналирование выполняется только для тех событий потока, которые созданы инструментами, имеющими столбец
ENABLED, установленный вYESв таблицеsetup_instruments.
-
-
CONNECTION_TYPEПротокол, используемый для установления соединения, или
NULLдля фоновых потоков. Разрешённые значения:TCP/IP(TCP/IP-соединение без шифрования),SSL/TLS(TCP/IP-соединение с шифрованием),Socket(соединение через Unix-сокет),Named Pipe(соединение через именованную Windows-пайпу) иShared Memory(соединение через общую память Windows).
-
THREAD_OS_IDИдентификатор потока или задачи, определенный базовой операционной системой, если он существует:
Когда поток MySQL связан с тем же потоком операционной системы на протяжении всего своего жизненного цикла,
THREAD_OS_IDсодержит идентификатор потока операционной системы.Когда поток MySQL не связан с одним и тем же потоком операционной системы на протяжении всего его жизненного цикла,
THREAD_OS_IDсодержитNULL. Это типично для пользовательских сессий, когда используется плагин пула потоков (см. Раздел 7.6.3, «Пул потоков MySQL Enterprise»).
Для Windows,
THREAD_OS_IDсоответствует идентификатору потока, отображаемому в Process Explorer (https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx).Для Linux,
THREAD_OS_IDсоответствует значению функцииgettid(). Это значение доступно, например, с помощью команд perf или ps -L, или в файловой системеproc(/proc/). Дополнительную информацию см. в руководствах[pid]/task/[tid]perf-stat(1),ps(1)иproc(5). -
RESOURCE_GROUPМетка группы ресурсов. Это значение
NULL, если группы ресурсов не поддерживаются текущей платформой или настройками сервера (см. Ограничения групп ресурсов). -
EXECUTION_ENGINEДвижок выполнения запросов. Значение равно либо
PRIMARY, либоSECONDARY. Для использования с HeatWave Service и HeatWave, где движокPRIMARYявляетсяInnoDB, а движокSECONDARYявляется HeatWave (RAPID). Для MySQL Community Edition Server, MySQL Enterprise Edition Server (на локальном сервере) и HeatWave Service без HeatWave значение всегда равноPRIMARY. -
CONTROLLED_MEMORYОбъём контролируемой памяти, используемой потоком.
-
MAX_CONTROLLED_MEMORYМаксимальное значение
CONTROLLED_MEMORY, достигнутое во время выполнения потока. -
TOTAL_MEMORYТекущий объём памяти, контролируемой или нет, используемой потоком.
-
MAX_TOTAL_MEMORYМаксимальное значение
TOTAL_MEMORY, достигнутое во время выполнения потока. -
TELEMETRY_ACTIVEИмеет ли поток активную присоединённую сессию телеметрии. Значение равно
YESилиNO.
Таблица threads содержит следующие индексы:
Первичный ключ по (
THREAD_ID)Индекс по (
NAME)Индекс по (
PROCESSLIST_ID)Индекс по (
PROCESSLIST_USER,PROCESSLIST_HOST)Индекс по (
PROCESSLIST_HOST)Индекс по (
THREAD_OS_ID)Индекс по (
RESOURCE_GROUP)
TRUNCATE TABLE не разрешено для таблицы threads.
© 2025 Oracle
Licensed under the GPLv2 License.