Spec-Zone.ru › MySQL 8.4

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

  • 29.12.5.1 Таблица events_stages_current
  • 29.12.5.2 Таблица events_stages_history
  • 29.12.5.3 Таблица events_stages_history_long

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

mysql> SELECT NAME, ENABLED, TIMED
       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/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 NAME, ENABLED, TIMED
       FROM performance_schema.setup_instruments
       WHERE ENABLED='YES' AND NAME LIKE "stage/%";
+------------------------------------------------------+---------+-------+
| NAME                                                 | ENABLED | TIMED |
+------------------------------------------------------+---------+-------+
| stage/sql/copy to tmp table                          | YES     | YES   |
| stage/sql/Applying batch of row changes (write)      | YES     | YES   |
| stage/sql/Applying batch of row changes (update)     | YES     | YES   |
| stage/sql/Applying batch of row changes (delete)     | 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   |
| stage/innodb/clone (file copy)                       | YES     | YES   |
| stage/innodb/clone (redo copy)                       | YES     | YES   |
| stage/innodb/clone (page copy)                       | 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%';
    

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

Дополнительную информацию о настройке сбора событий см. в Разделе 29.3, «Настройка Performance Schema при запуске» и Разделе 29.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-8.4-en/performance-schema-stage-tables.html

Spec-Zone.ru

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