
# DDL进度显示
#### 功能介绍
大表的DDL操作往往会比较耗时，社区版MySQL无法感知整个DDL的进行阶段与该阶段的进度，可能给用户带来很大的困扰。
针对以上问题，华为云RDS for MySQL推出了DDL进度显示特性，用户可以通过查询"INFORMATION_SCHEMA.INNODB_ALTER_TABLE_PROGRESS"表来实时查看当前的DDL语句所进行的阶段，以及该阶段的进度。
#### 约束限制
该功能仅支持RDS for MySQL 5.7版本。
#### 功能特点
表1INNODB_ALTER_TABLE_PROGRESS表字段详解 
| 字段                | 说明                  |
|:---|:---|
| 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)：结束阶段。
 
