DDL进度显示
功能介绍
大表的DDL操作往往会比较耗时,社区版MySQL无法感知整个DDL的进行阶段与该阶段的进度,可能给用户带来很大的困扰。
针对以上问题,华为云RDS for MySQL推出了DDL进度显示特性,用户可以通过查询“INFORMATION_SCHEMA.INNODB_ALTER_TABLE_PROGRESS”表来实时查看当前的DDL语句所进行的阶段,以及该阶段的进度。
约束限制
该功能仅支持RDS for MySQL 5.7版本。
功能特点
字段 |
说明 |
---|---|
THREAD_ID |
线程ID |
QUERY |
ALTER TABLE SQL语句内容 |
START_TIME |
DDL开始时间 |
ELAPSED_TIME |
已执行的时间(s) |
ALTER_TABLE_STAGE |
当前执行的内容 |
STAGE_COMPLETED |
已完成的工作单位 |
STAGE_ESTIMATED |
预估的工作单位 |
一个DDL从开始到结束可能有下面几个阶段(ALTER_TABLE_STAGE字段的值):
- stage/innodb/alter table (read PK and internal sort):读取主键。
- stage/innodb/alter table (merge sort):根据主键排序,这个过程可能较慢,因为会有临时文件生成。
- stage/innodb/alter table (insert):将排序后的数据插入表中。
- stage/innodb/alter table (log apply index):将DDL过程中客户执行的DML日志应用到本次创建/修改的索引。
- stage/innodb/alter table (flush):数据刷盘。
- stage/innodb/alter table (log apply table):将DDL过程中客户执行的DML日志应用到本次创建/修改的表。
- stage/innodb/alter table (end):结束阶段。