29.4.6 Предварительное фильтрование по потоку
Таблица threads содержит строку для каждого потока сервера. Каждая строка содержит информацию о потоке и указывает, включено ли мониторинг для него. Для мониторинга потока Performance Schema должны выполняться следующие условия:
Потребитель
thread_instrumentationв таблицеsetup_consumersдолжен бытьYES.Столбец
threads.INSTRUMENTEDдолжен бытьYES.Мониторинг выполняется только для тех событий потока, которые генерируются инструментами, включенными в таблице
setup_instruments.
Таблица threads также указывает для каждого потока сервера, нужно ли выполнять ведение истории событий. Это включает события ожидания, этапа, заявления и транзакции и влияет на ведение журнала в следующих таблицах:
events_waits_history
events_waits_history_long
events_stages_history
events_stages_history_long
events_statements_history
events_statements_history_long
events_transactions_history
events_transactions_history_long
Для ведения истории событий должны выполняться следующие условия:
Соответствующие потребители, связанные с историей, в таблице
setup_consumersдолжны быть включены. Например, ведение журнала событий ожидания в таблицахevents_waits_historyиevents_waits_history_longтребует включения соответствующих потребителейevents_waits_historyиevents_waits_history_long.Столбец
threads.HISTORYдолжен бытьYES.Журналирование выполняется только для тех событий потока, которые генерируются инструментами, включенными в таблице
setup_instruments.
Для фоновых потоков (возникающих из соединений клиентов) начальные значения столбцов INSTRUMENTED и HISTORY в строках таблицы threads определяются соответствием учетной записи пользователя потока любой строке в таблице setup_actors. Значения берутся из столбцов ENABLED и HISTORY соответствующей строки таблицы setup_actors.
Для фоновых потоков нет связанного пользователя. INSTRUMENTED и HISTORY по умолчанию YES и таблица setup_actors не используется.
Начальное содержимое таблицы setup_actors выглядит следующим образом:
mysql> SELECT * FROM performance_schema.setup_actors;
+------+------+------+---------+---------+
| HOST | USER | ROLE | ENABLED | HISTORY |
+------+------+------+---------+---------+
| % | % | % | YES | YES |
+------+------+------+---------+---------+
Столбцы HOST и USER должны содержать буквальное имя хоста или пользователя, или '%', чтобы соответствовать любому имени.
Столбцы ENABLED и HISTORY указывают, нужно ли включать инструментирование и ведение истории событий для соответствующих потоков, с учетом других условий, описанных ранее.
Когда Performance Schema проверяет соответствие для каждого нового фонового потока в setup_actors, он пытается найти более точные соответствия, используя столбцы USER и HOST (ROLE не используется):
Строки с
USER='иliteral'HOST='.literal'Строки с
USER='иliteral'HOST='%'.Строки с
USER='%'иHOST='.literal'Строки с
USER='%'иHOST='%'.
Порядок соответствия имеет значение, поскольку разные строки соответствия в таблице setup_actors могут иметь различные значения в столбцах USER и HOST. Это позволяет применять инструментирование и ведение истории событий избирательно по хосту, пользователю или учетной записи (сочетанию пользователя и хоста) на основе значений столбцов ENABLED и HISTORY:
Если наилучшим соответствием является строка с
ENABLED=YES, то значениеINSTRUMENTEDдля потока становитсяYES. Если наилучшим соответствием является строка сHISTORY=YES, то значениеHISTORYдля потока становитсяYES.Если наилучшим соответствием является строка с
ENABLED=NO, то значениеINSTRUMENTEDдля потока становитсяNO. Если наилучшим соответствием является строка сHISTORY=NO, то значениеHISTORYдля потока становитсяNO.Если соответствие не найдено, значения
INSTRUMENTEDиHISTORYдля потока становятсяNO.
Столбцы ENABLED и HISTORY в строках таблицы setup_actors могут быть установлены в значение YES или NO независимо друг от друга. Это означает, что вы можете включать инструментирование отдельно от сбора событий истории.
По умолчанию мониторинг и сбор событий истории включены для всех новых фоновых потоков, поскольку таблица setup_actors изначально содержит строку со значением '%' для обоих столбцов HOST и USER. Для более ограниченного соответствия, например, для включения мониторинга только для некоторых фоновых потоков, необходимо изменить эту строку, так как она соответствует любому соединению, и добавить строки для более специфических сочетаний HOST/USER.
Предположим, что вы изменяете таблицу setup_actors следующим образом:
UPDATE performance_schema.setup_actors
SET ENABLED = 'NO', HISTORY = 'NO'
WHERE HOST = '%' AND USER = '%';
INSERT INTO performance_schema.setup_actors
(HOST,USER,ROLE,ENABLED,HISTORY)
VALUES('localhost','joe','%','YES','YES');
INSERT INTO performance_schema.setup_actors
(HOST,USER,ROLE,ENABLED,HISTORY)
VALUES('hosta.example.com','joe','%','YES','NO');
INSERT INTO performance_schema.setup_actors
(HOST,USER,ROLE,ENABLED,HISTORY)
VALUES('%','sam','%','NO','YES');
Выражение UPDATE изменяет соответствие по умолчанию, чтобы отключить инструментирование и сбор событий истории. Выражения INSERT добавляют строки для более точного соответствия.
Теперь Performance Schema определяет, как установить значения INSTRUMENTED и HISTORY для новых потоков подключений следующим образом:
Если
joeподключается с локального хоста, подключение соответствует первой добавленной строке. ЗначенияINSTRUMENTEDиHISTORYдля потока становятсяYES.Если
joeподключается с хостаhosta.example.com, подключение соответствует второй добавленной строке. ЗначениеINSTRUMENTEDдля потока становитсяYES, а значениеHISTORYстановитсяNO.Если
joeподключается с любого другого хоста, соответствия нет. ЗначенияINSTRUMENTEDиHISTORYдля потока становятсяNO.Если
samподключается с любого хоста, подключение соответствует третьей добавленной строке. ЗначениеINSTRUMENTEDдля потока становитсяNO, а значениеHISTORYстановитсяYES.Для любого другого подключения строка с
HOSTиUSER, установленные в'%', соответствует. Эта строка теперь имеетENABLEDиHISTORY, установленные вNO, поэтому значенияINSTRUMENTEDиHISTORYдля потока становятсяNO.
Изменения в таблице setup_actors влияют только на фоновые потоки, созданные после внесения изменений, а не на существующие потоки. Чтобы повлиять на существующие потоки, измените столбцы INSTRUMENTED и HISTORY в строках таблицы threads.
© 2025 Oracle
Licensed under the GPLv2 License.