Spec-Zone.ru › MySQL 5.7

25.12.5 Таблицы событий стадии Performance Schema

  • 25.12.5.1 Таблица events_stages_current
  • 25.12.5.2 Таблица events_stages_history
  • 25.12.5.3 Таблица events_stages_history_long

Таблица Performance Schema отслеживает стадии, которые представляют собой шаги в процессе выполнения оператора, такие как парсинг оператора, открытие таблицы или выполнение операции filesort. Стадии соответствуют состояниям потока, отображаемым в SHOW PROCESSLIST или видимым в таблице Информационной схемы PROCESSLIST. Стадии начинаются и заканчиваются при изменении значений состояния.

В иерархии событий события ожидания вложены в события стадии, которые вложены в события оператора, которые вложены в события транзакции.

Эти таблицы хранят события стадии:

  • events_stages_current: текущее событие стадии для каждого потока.

  • events_stages_history: последние завершенные события стадии для каждого потока.

  • events_stages_history_long: последние завершенные события стадии глобально (по всем потокам).

В следующих разделах описываются таблицы событий стадии. Также есть сводные таблицы, которые агрегируют информацию о событиях стадии; см. Раздел 25.12.15.2, «Сводные таблицы стадии».

Дополнительную информацию об отношениях между тремя таблицами событий стадии см. в Разделе 25.9, «Таблицы Performance Schema для текущих и исторических событий».

  • Настройка сбора событий стадии

  • Информация о ходе событий стадии

Настройка сбора событий стадии

Чтобы управлять сбором событий стадии, установите состояние соответствующих инструментов и потребителей:

  • Таблица setup_instruments содержит инструменты с именами, начинающимися с stage. Используйте эти инструменты для включения или выключения сбора отдельных классов событий стадии.

  • Таблица setup_consumers содержит значения потребителей с именами, соответствующими текущим и историческим таблицам событий стадии. Используйте этих потребителей для фильтрации сбора событий стадии.

За исключением инструментов, предоставляющих информацию о ходе выполнения оператора, инструменты стадии по умолчанию отключены. Например:

mysql> SELECT *
       FROM performance_schema.setup_instruments
       WHERE NAME RLIKE 'stage/sql/[a-c]';
+----------------------------------------------------+---------+-------+
| NAME                                               | ENABLED | TIMED |
+----------------------------------------------------+---------+-------+
| stage/sql/After create                             | NO      | NO    |
| stage/sql/allocating local table                   | NO      | NO    |
| stage/sql/altering table                           | NO      | NO    |
| stage/sql/committing alter table to storage engine | NO      | NO    |
| stage/sql/Changing master                          | NO      | NO    |
| stage/sql/Checking master version                  | NO      | NO    |
| stage/sql/checking permissions                     | NO      | NO    |
| stage/sql/checking privileges on cached query      | NO      | NO    |
| stage/sql/checking query cache for query           | NO      | NO    |
| stage/sql/cleaning up                              | NO      | NO    |
| stage/sql/closing tables                           | NO      | NO    |
| stage/sql/Connecting to master                     | NO      | NO    |
| stage/sql/converting HEAP to MyISAM                | NO      | NO    |
| stage/sql/Copying to group table                   | NO      | NO    |
| stage/sql/Copying to tmp table                     | NO      | NO    |
| stage/sql/copy to tmp table                        | NO      | NO    |
| stage/sql/Creating sort index                      | NO      | NO    |
| stage/sql/creating table                           | NO      | NO    |
| stage/sql/Creating tmp table                       | NO      | NO    |
+----------------------------------------------------+---------+-------+

Инструменты событий стадии, предоставляющие информацию о ходе выполнения оператора, включены и отслеживаются по умолчанию:

mysql> SELECT *
       FROM performance_schema.setup_instruments
       WHERE ENABLED='YES' AND NAME LIKE "stage/%";
+------------------------------------------------------+---------+-------+
| NAME                                                 | ENABLED | TIMED |
+------------------------------------------------------+---------+-------+
| stage/sql/copy to tmp table                          | YES     | YES   |
| stage/innodb/alter table (end)                       | YES     | YES   |
| stage/innodb/alter table (flush)                     | YES     | YES   |
| stage/innodb/alter table (insert)                    | YES     | YES   |
| stage/innodb/alter table (log apply index)           | YES     | YES   |
| stage/innodb/alter table (log apply table)           | YES     | YES   |
| stage/innodb/alter table (merge sort)                | YES     | YES   |
| stage/innodb/alter table (read PK and internal sort) | YES     | YES   |
| stage/innodb/buffer pool load                        | YES     | YES   |
+------------------------------------------------------+---------+-------+

Потребители стадии по умолчанию отключены:

mysql> SELECT *
       FROM performance_schema.setup_consumers
       WHERE NAME LIKE 'events_stages%';
+----------------------------+---------+
| NAME                       | ENABLED |
+----------------------------+---------+
| events_stages_current      | NO      |
| events_stages_history      | NO      |
| events_stages_history_long | NO      |
+----------------------------+---------+

Чтобы управлять сбором событий стадии при запуске сервера, используйте такие строки в вашем файле my.cnf:

  • Включить:

    [mysqld]
    performance-schema-instrument='stage/%=ON'
    performance-schema-consumer-events-stages-current=ON
    performance-schema-consumer-events-stages-history=ON
    performance-schema-consumer-events-stages-history-long=ON
    
  • Отключить:

    [mysqld]
    performance-schema-instrument='stage/%=OFF'
    performance-schema-consumer-events-stages-current=OFF
    performance-schema-consumer-events-stages-history=OFF
    performance-schema-consumer-events-stages-history-long=OFF
    

Чтобы управлять сбором событий стадии во время выполнения, обновляйте таблицы setup_instruments и setup_consumers:

  • Включить:

    UPDATE performance_schema.setup_instruments
    SET ENABLED = 'YES', TIMED = 'YES'
    WHERE NAME LIKE 'stage/%';
    
    UPDATE performance_schema.setup_consumers
    SET ENABLED = 'YES'
    WHERE NAME LIKE 'events_stages%';
    
  • Отключить:

    UPDATE performance_schema.setup_instruments
    SET ENABLED = 'NO', TIMED = 'NO'
    WHERE NAME LIKE 'stage/%';
    
    UPDATE performance_schema.setup_consumers
    SET ENABLED = 'NO'
    WHERE NAME LIKE 'events_stages%';
    

Чтобы собирать только определенные события стадии, включите только соответствующие инструменты стадии. Чтобы собирать события стадии только для определённых таблиц событий стадии, включите инструменты стадии, но только потребителей стадии, соответствующих требуемым таблицам.

Таблица setup_timers содержит строку со значением NAME равным stage, которое указывает единицу для измерения времени событий стадии. По умолчанию используется единица NANOSECOND:

mysql> SELECT *
       FROM performance_schema.setup_timers
       WHERE NAME = 'stage';
+-------+------------+
| NAME  | TIMER_NAME |
+-------+------------+
| stage | NANOSECOND |
+-------+------------+

Чтобы изменить единицу измерения времени, измените значение TIMER_NAME:

UPDATE performance_schema.setup_timers
SET TIMER_NAME = 'MICROSECOND'
WHERE NAME = 'stage';

Дополнительную информацию о настройке сбора событий см. в Разделе 25.3, «Настройка Performance Schema при запуске» и Разделе 25.4, «Настройка Performance Schema во время выполнения».

Информация о ходе событий стадии

Таблицы событий стадии Performance Schema содержат два столбца, которые вместе предоставляют индикатор хода стадии для каждой строки:

  • WORK_COMPLETED: количество завершенных единиц работы для стадии

  • WORK_ESTIMATED: ожидаемое количество единиц работы для стадии

Каждый столбец имеет значение NULL, если информация о ходе выполнения не предоставлена для инструмента. Интерпретация информации, если она доступна, полностью зависит от реализации инструмента. Таблицы Performance Schema предоставляют контейнер для хранения данных о ходе выполнения, но не делают предположений о семантике самих метрик:

  • “Единица работы” — это целочисленная метрика, которая увеличивается со временем во время выполнения, например, количество байтов, строк, файлов или таблиц, обработанных. Определение “единицы работы” для конкретного инструмента определяется кодом инструментирования, предоставляющим данные.

  • Значение WORK_COMPLETED может увеличиваться на одну или несколько единиц за раз, в зависимости от инструментального кода.

  • Значение WORK_ESTIMATED может изменяться во время стадии, в зависимости от инструментального кода.

Инструментирование для индикатора хода события стадии может реализовать любое из следующих поведений:

  • Отсутствие инструментирования хода

    Это наиболее распространённый случай, когда данные о ходе не предоставляются. Столбцы WORK_COMPLETED и WORK_ESTIMATED оба имеют значение NULL.

  • Неограниченное инструментирование хода

    Значение только столбца WORK_COMPLETED имеет смысл. Данные не предоставляются для столбца WORK_ESTIMATED, который отображает 0.

    Обращаясь к таблице events_stages_current для отслеживаемой сессии, приложение мониторинга может сообщать, сколько работы было выполнено до сих пор, но не может сообщать, близка ли стадия к завершению. В настоящее время такие стадии не инструментированы.

  • Ограниченное инструментирование хода

    Столбцы WORK_COMPLETED и WORK_ESTIMATED оба имеют смысл.

    Этот тип индикатора хода подходит для операции с определённым критерием завершения, например, для инструмента копирования таблицы, описанного ниже. Обращаясь к таблице events_stages_current для отслеживаемой сессии, приложение мониторинга может сообщать, сколько работы было выполнено до сих пор, и может сообщать об общем проценте завершения стадии, вычисляя отношение WORK_COMPLETED / WORK_ESTIMATED.

Инструмент stage/sql/copy to tmp table иллюстрирует, как работают индикаторы хода. При выполнении оператора ALTER TABLE используется стадия stage/sql/copy to tmp table, и эта стадия может выполняться потенциально долго, в зависимости от размера копируемых данных.

Задача копирования таблицы имеет определённое завершение (все строки скопированы), и стадия stage/sql/copy to tmp table инструментирована для предоставления ограниченной информации о ходе выполнения: единицей измерения является количество скопированных строк, WORK_COMPLETED и WORK_ESTIMATED имеют смысл, и их отношение указывает процент выполнения задачи.

Чтобы включить инструмент и соответствующих потребителей, выполните эти операторы:

UPDATE performance_schema.setup_instruments
SET ENABLED='YES'
WHERE NAME='stage/sql/copy to tmp table';

UPDATE performance_schema.setup_consumers
SET ENABLED='YES'
WHERE NAME LIKE 'events_stages_%';

Чтобы увидеть ход выполнения текущего оператора ALTER TABLE, выберите из таблицы events_stages_current.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/performance-schema-stage-tables.html

Spec-Zone.ru

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