Spec-Zone.ru › MySQL 5.7

25.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-5.7-en/performance-schema-thread-filtering.html

Spec-Zone.ru

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