
无为,多年 MySQL DBA 工作经验,现就职于某知名互联网公司,对 MySQL、 Redis、PostgrepSQL 等主流数据库有一定了解,拥有丰富的一线运维经验。
1 官方文档
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):此阶段包括在 ALTER TABLE 运行时生成的 DML 日志的应用。 stage/innodb/alter table (flush):在此阶段开始之前,将根据刷新列 table 的长度以更准确的估算值更新 WORK_ESTIMATED。 stage/innodb/alter table (log apply table):此阶段包括应用程序运行 ALTER TABLE 时生成的并发 DML 日志。此阶段的持续时间取决于 table 更改的程度。如果未在 table 上运行任何并发 DML,则此阶段是即时的。 stage/innodb/alter table (end):包括刷新阶段之后出现的所有剩余工作,例如重新应用在 ALTER TABLE 运行时在 table 上执行的 DML。
2 示例
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
小贴士 那开启 performance_schema 会不会影响性能呢? 答:会影响性能,但我们只开了 stage/innodb/alter% 的,因此影响可以忽略不计
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
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_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)
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)


文章转载自悦专栏,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




