17.16.1 Мониторинг прогресса ALTER TABLE для таблиц InnoDB с помощью Performance Schema
Вы можете отслеживать прогресс ALTER TABLE для таблиц InnoDB, используя Performance Schema.
Существует семь событий этапов, которые представляют разные фазы ALTER TABLE. Каждое событие этапа сообщает о текущем суммарном значении WORK_COMPLETED и WORK_ESTIMATED для всей операции ALTER TABLE по мере ее прохождения через разные фазы. Значение WORK_ESTIMATED рассчитывается по формуле, учитывающей всю работу, которую выполняет ALTER TABLE, и может быть пересмотрено во время обработки ALTER TABLE. Значения WORK_COMPLETED и WORK_ESTIMATED представляют собой абстрактное представление всей работы, выполненной ALTER TABLE.
В порядке их возникновения, события этапов ALTER TABLE включают:
stage/innodb/alter table (read PK and internal sort): Этот этап активен, когдаALTER TABLEнаходится в фазе чтения первичного ключа. Он начинается со значенийWORK_COMPLETED=0иWORK_ESTIMATED, установленных в оценочном количестве страниц в первичном ключе. После завершения этапаWORK_ESTIMATEDобновляется до фактического количества страниц в первичном ключе.stage/innodb/alter table (merge sort): Этот этап повторяется для каждого добавленного индекса операциейALTER TABLE.stage/innodb/alter table (insert): Этот этап повторяется для каждого добавленного индекса операциейALTER TABLE.stage/innodb/alter table (log apply index): Этот этап включает применение журнала DML, сгенерированного во время выполненияALTER TABLE.stage/innodb/alter table (flush): Перед началом этого этапаWORK_ESTIMATEDобновляется с более точной оценкой, основанной на длине списка сброса.stage/innodb/alter table (log apply table): Этот этап включает применение журнала одновременного DML, сгенерированного во время выполненияALTER TABLE. Длительность этой фазы зависит от объема изменений таблицы. Эта фаза мгновенна, если одновременный DML не выполнялся над таблицей.stage/innodb/alter table (end): Включает любую оставшуюся работу, которая появилась после фазы сброса, например, повторное применение DML, который был выполнен над таблицей во время выполненияALTER TABLE.
События этапов ALTER
TABLE в настоящее время не учитывают добавление пространственных индексов.
Пример мониторинга ALTER TABLE с помощью Performance Schema
Следующий пример демонстрирует, как включить инструменты событий этапов stage/innodb/alter table% и связанные таблицы потребителей для мониторинга прогресса ALTER TABLE. Для получения информации об инструментах событий этапов Performance Schema и связанных потребителях, см. Раздел 29.12.5, «Таблицы событий этапов Performance Schema».
-
Включить инструменты
stage/innodb/alter%:mysql>
UPDATE performance_schema.setup_instrumentsSET ENABLED = 'YES'WHERE NAME LIKE 'stage/innodb/alter%';Query OK, 7 rows affected (0.00 sec) Rows matched: 7 Changed: 7 Warnings: 0 -
Включить таблицы потребителей событий этапов, которые включают
events_stages_current,events_stages_historyиevents_stages_history_long.mysql>
UPDATE performance_schema.setup_consumersSET ENABLED = 'YES'WHERE NAME LIKE '%stages%';Query OK, 3 rows affected (0.00 sec) Rows matched: 3 Changed: 3 Warnings: 0 -
Выполнить операцию
ALTER TABLE. В этом примере к таблице employees в образцовой базе данных employees добавляется столбецmiddle_name.mysql>
ALTER TABLE employees.employees ADD COLUMN middle_name varchar(14) AFTER first_name;Query OK, 0 rows affected (9.27 sec) Records: 0 Duplicates: 0 Warnings: 0 -
Проверить прогресс операции
ALTER TABLE, запросив таблицу Performance Schemaevents_stages_current. Событие этапа, отображаемое, отличается в зависимости от фазыALTER TABLE, которая в данный момент выполняется. СтолбецWORK_COMPLETEDпоказывает выполненную работу. СтолбецWORK_ESTIMATEDпредоставляет оценку оставшейся работы.mysql>
SELECT EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATEDFROM performance_schema.events_stages_current;+------------------------------------------------------+----------------+----------------+ | EVENT_NAME | WORK_COMPLETED | WORK_ESTIMATED | +------------------------------------------------------+----------------+----------------+ | stage/innodb/alter table (read PK and internal sort) | 280 | 1245 | +------------------------------------------------------+----------------+----------------+ 1 row in set (0.01 sec)Таблица
events_stages_currentвозвращает пустой набор, если операцияALTER TABLEзавершена. В этом случае вы можете проверить таблицуevents_stages_history, чтобы просмотреть данные события для завершенной операции. Например:mysql>
SELECT EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATEDFROM performance_schema.events_stages_history;+------------------------------------------------------+----------------+----------------+ | EVENT_NAME | WORK_COMPLETED | WORK_ESTIMATED | +------------------------------------------------------+----------------+----------------+ | stage/innodb/alter table (read PK and internal sort) | 886 | 1213 | | stage/innodb/alter table (flush) | 1213 | 1213 | | stage/innodb/alter table (log apply table) | 1597 | 1597 | | stage/innodb/alter table (end) | 1597 | 1597 | | stage/innodb/alter table (log apply table) | 1981 | 1981 | +------------------------------------------------------+----------------+----------------+ 5 rows in set (0.00 sec)Как показано выше, значение
WORK_ESTIMATEDбыло пересмотрено во время обработкиALTER TABLE. Оцененная работа после завершения начального этапа составляет 1213. После завершения обработкиALTER TABLE, значениеWORK_ESTIMATEDбыло установлено на фактическое значение, которое составляет 1981.
© 2025 Oracle
Licensed under the GPLv2 License.