Spec-Zone.ru › MySQL 9.2

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 реализованы этапы, представляющие собой шаги в процессе выполнения инструкции, такие как синтаксический анализ инструкции, открытие таблицы или выполнение filesort операции. Этапы соответствуют состояниям потоков, отображаемым оператором 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-9.2-en/performance-schema-stage-tables.html

Spec-Zone.ru

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