更新时间:2023-10-09 GMT+08:00

DDL进度显示

功能介绍

大表的DDL操作往往会比较耗时,社区版MySQL无法感知整个DDL的进行阶段与该阶段的进度,可能给用户带来很大的困扰。

针对以上问题,华为云RDS for MySQL推出了DDL进度显示特性,用户可以通过查询“INFORMATION_SCHEMA.INNODB_ALTER_TABLE_PROGRESS”表来实时查看当前的DDL语句所进行的阶段,以及该阶段的进度。

功能特点

表1 INNODB_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):结束阶段。