一條DDL語句會以一個DDL任務方式在PolarDB-X內部執行,使用SHOW DDL命令可以查看當前PolarDB-X執行個體中的DDL任務。
文法
SHOW [FULL] DDL;樣本
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任務會按照QUEUED->RUNNING->COMPLETED的流程執行成功。
異常情況下,DDL任務可能會自動復原,此時的流程為QUEUED->RUNNING->ROLLBACK_RUNNING->ROLLBACK_COMPLETED。
特殊情況下,DDL任務的狀態還可以通過命令幹預,上圖中箭頭上展示的是可用於修改DDL任務狀態的命令。