Spec-Zone.ru › MySQL 5.7

25.12.4 Таблицы событий ожидания Performance Schema

  • 25.12.4.1 Таблица events_waits_current
  • 25.12.4.2 Таблица events_waits_history
  • 25.12.4.3 Таблица events_waits_history_long

Модуль 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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/performance-schema-wait-tables.html

Spec-Zone.ru

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