Spec-Zone.ru › MySQL 8.4

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 указывают, нужно ли включать инструментацию и журналирование исторических событий для соответствующих потоков, с учетом других условий, описанных ранее.

При проверке соответствия для каждого нового фонового потока в setup_actors Performance Schema сначала пытается найти более конкретное соответствие, используя столбцы 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.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/performance-schema-thread-filtering.html

Spec-Zone.ru

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