14.17.1 使用性能模式监视 InnoDBtable 的 ALTER TABLE 进度

您可以使用Performance Schema监视InnoDB个 table 的ALTER TABLE进度。

有七个阶段事件代 tableALTER TABLE的不同阶段。每个阶段事件在其不同阶段进行时,报告的总体_操作的运行总计WORK_COMPLETEDWORK_ESTIMATEDWORK_ESTIMATED是使用考虑到ALTER TABLE执行的所有工作的公式计算得出的,并且可以在ALTER TABLE处理期间进行修改。 WORK_COMPLETEDWORK_ESTIMATED值是ALTER TABLE执行的所有工作的抽象 table 示。

按照发生的 Sequences,ALTER TABLE个阶段事件包括:

Note

InnoDB ALTER TABLE舞台事件当前不考虑空间索引的增加。

ALTER TABLE 使用性能模式的监视示例

以下示例演示了如何启用stage/innodb/alter table%阶段事件工具和相关的使用者 table 来监视ALTER TABLE进度。有关 Performance Schema 阶段事件工具和相关使用者的信息,请参见第 25.12.5 节“性能架构阶段事件 table”

mysql> UPDATE performance_schema.setup_instruments
       SET ENABLED = 'YES'
       WHERE NAME LIKE 'stage/innodb/alter%';
Query OK, 7 rows affected (0.00 sec)
Rows matched: 7  Changed: 7  Warnings: 0
mysql> UPDATE performance_schema.setup_consumers
       SET ENABLED = 'YES'
       WHERE NAME LIKE '%stages%';
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 0
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
mysql> SELECT EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATED
       FROM 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)

如果ALTER TABLE操作已完成,则events_stages_currenttable 返回一个空集。在这种情况下,您可以检查events_stages_historytable 以查看事件数据以了解已完成的操作。例如:

mysql> SELECT EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATED
       FROM 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)

如上所示,在ALTER TABLE处理期间修改了WORK_ESTIMATED值。初始阶段完成之后的估计功为 1213.ALTER TABLE处理完成后,将WORK_ESTIMATED设置为实际值 1981.

首页