一条DDL语句会以一个DDL任务方式在PolarDB-X内部执行,使用SHOW DDL命令可以查看当前PolarDB-X实例中的DDL任务。

语法

SHOW [FULL] DDL;

示例

mysql> show ddl\G;
*************************** 1. row ***************************
           JOB_ID: 1359947811109470208
    OBJECT_SCHEMA: d1
      OBJECT_NAME: t2
           ENGINE: DAG
         DDL_TYPE: ALTER_TABLE
            STATE: PAUSED
BACKFILL_PROGRESS: 0%
 PHY_DDL_PROGRESS: 100%
         PROGRESS: 20%
       START_TIME: 2021-08-05 11:01:25.291
         END_TIME: 2021-08-05 11:02:27.020
 ELAPSED_TIME(MS): 61729
      PHY_PROCESS: 
       CANCELABLE: true
1 row in set (0.03 sec)

返回参数说明

参数名称 说明
JOB_ID DDL任务唯一标识,取值需为64位有符号长整型数值。
OBJECT_SCHEMA DDL任务对象的Schema名称。
OBJECT_NAME DDL任务对象名称,例如当前执行DDL的表名称。
ENGINE DDL任务引擎类型,默认为DAG。
DDL_TYPE DDL任务类型,例如,CREATE_TABLE
STATE DDL任务当前所处的状态,具体请参见DDL状态
BACKFILL_PROGRESS DDL任务中,数据回填的进度。
PHY_DDL_PROGRESS DDL任务中,当前执行的一批物理DDL的进度。
PROGRESS DDL任务的总体进度。
START_TIME DDL任务开始执行的时间。
END_TIME DDL任务结束执行的时间。
ELAPSED_TIME(MS) DDL任务截止到任务查看时已经消耗的时间,单位:毫秒。
PHY_PROCESS 执行中的物理DDL的状态。
CANCELABLE DDL任务是否可通过CANCEL DDL命令取消。

DDL状态

SHOW DDL命令返回的STATE字段标示了DDL任务的状态,状态转移图如下所示:DDL状态

绝大多数情况,DDL任务会按照QUEUED->RUNNING->COMPLETED的流程执行成功。

异常情况下,DDL任务可能会自动回滚,此时的流程为QUEUED->RUNNING->ROLLBACK_RUNNING->ROLLBACK_COMPLETED

特殊情况下,DDL任务的状态还可以通过命令干预,上图中箭头上展示的是可用于修改DDL任务状态的命令。