25.12.4 Таблицы событий ожидания Performance Schema
Модуль Performance Schema регистрирует ожидания, которые являются событиями, занимающими время. В иерархии событий события ожидания вложены в события стадии, которые вложены в события операторов, которые вложены в события транзакций.
Эти таблицы хранят события ожидания:
events_waits_current: Текущее событие ожидания для каждого потока.events_waits_history: Последние события ожидания, завершенные в каждом потоке.events_waits_history_long: Последние события ожидания, завершенные глобально (по всем потокам).
В следующих разделах описываются таблицы событий ожидания. Также есть сводные таблицы, которые агрегируют информацию о событиях ожидания; см. Раздел 25.12.15.1, «Сводные таблицы событий ожидания».
Для получения дополнительной информации о взаимосвязи между тремя таблицами событий ожидания см. Раздел 25.9, «Таблицы Performance Schema для текущих и исторических событий».
Настройка сбора событий ожидания
Чтобы управлять сбором событий ожидания, измените состояние соответствующих инструментов и потребителей:
Таблица
setup_instrumentsсодержит инструменты с именами, начинающимися сwait. Используйте эти инструменты для включения или отключения сбора отдельных классов событий ожидания.Таблица
setup_consumersсодержит значения потребителей с именами, соответствующими именам текущих и исторических таблиц событий ожидания. Используйте этих потребителей для фильтрации сбора событий ожидания.
Некоторые инструменты ожидания включены по умолчанию, другие — выключены. Например:
mysql> SELECT * FROM performance_schema.setup_instruments
WHERE NAME LIKE 'wait/io/file/innodb%';
+--------------------------------------+---------+-------+
| NAME | ENABLED | TIMED |
+--------------------------------------+---------+-------+
| wait/io/file/innodb/innodb_data_file | YES | YES |
| wait/io/file/innodb/innodb_log_file | YES | YES |
| wait/io/file/innodb/innodb_temp_file | YES | YES |
+--------------------------------------+---------+-------+
mysql> SELECT *
FROM performance_schema.setup_instruments WHERE
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 |
+----------------------------------------+---------+-------+
Потребители ожидания по умолчанию отключены:
mysql> SELECT *
FROM performance_schema.setup_consumers
WHERE NAME LIKE 'events_waits%';
+---------------------------+---------+
| NAME | ENABLED |
+---------------------------+---------+
| events_waits_current | NO |
| events_waits_history | NO |
| events_waits_history_long | NO |
+---------------------------+---------+
Для управления сбором событий ожидания при запуске сервера используйте такие строки в вашем файле my.cnf:
-
Включить:
[mysqld] performance-schema-instrument='wait/%=ON' performance-schema-consumer-events-waits-current=ON performance-schema-consumer-events-waits-history=ON performance-schema-consumer-events-waits-history-long=ON
-
Отключить:
[mysqld] performance-schema-instrument='wait/%=OFF' performance-schema-consumer-events-waits-current=OFF performance-schema-consumer-events-waits-history=OFF performance-schema-consumer-events-waits-history-long=OFF
Для управления сбором событий ожидания во время выполнения, обновите таблицы setup_instruments и setup_consumers:
-
Включить:
UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES' WHERE NAME LIKE 'wait/%'; UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE 'events_waits%';
-
Отключить:
UPDATE performance_schema.setup_instruments SET ENABLED = 'NO', TIMED = 'NO' WHERE NAME LIKE 'wait/%'; UPDATE performance_schema.setup_consumers SET ENABLED = 'NO' WHERE NAME LIKE 'events_waits%';
Чтобы собирать только определенные события ожидания, включите только соответствующие инструменты ожидания. Чтобы собирать события ожидания только для определенных таблиц событий ожидания, включите инструменты ожидания, но только потребителей ожидания, соответствующих нужным таблицам.
Таблица setup_timers содержит строку со значением NAME равным wait, которое указывает единицу измерения времени для событий ожидания. Единица измерения по умолчанию — CYCLE:
mysql> SELECT *
FROM performance_schema.setup_timers
WHERE NAME = 'wait';
+------+------------+
| NAME | TIMER_NAME |
+------+------------+
| wait | CYCLE |
+------+------------+
Чтобы изменить единицу измерения времени, измените значение TIMER_NAME:
UPDATE performance_schema.setup_timers
SET TIMER_NAME = 'NANOSECOND'
WHERE NAME = 'wait';
Дополнительную информацию о настройке сбора событий см. в Разделе 25.3, «Настройка Performance Schema при запуске» и Разделе 25.4, «Настройка Performance Schema во время выполнения».
© 2025 Oracle
Licensed under the GPLv2 License.