# 加速TiDB DDL速度

LLMS 索引： [llms.txt](/llms.txt)

---

## 执行DDL

虽然TiDB的DDL操作都是Online DDL，不会堵塞DML操作，但是不代表立刻可以完成

```sql
alter table ying99_fundtxn.fund_order add KEY `FUND_ORDER_CUST_NO` (`account_id`);
```

> 虽然执行DDL SQL后，看起来操作已经被卡住是同步执行的，`CTRL + C`也没办法终止进程，其实任务已经提交到DDL Queue中，即便你把终端直接关闭，也不会导致DDL被误删。
> 如果想取消正在执行的DDL的话，可以参考[官方文档](https://docs.pingcap.com/zh/tidb/stable/sql-statement-admin-cancel-ddl)，使用命令: 
> 
> ```sql
> ADMIN CANCEL DDL JOBS job_id [, job_id] ...;
> ```

## 查看DDL进度

使用`admin show ddl`/`admin show ddl jobs`查看

```
mysql> admin show ddl\G
*************************** 1. row ***************************
   SCHEMA_VER: 371
     OWNER_ID: 0c47830f-1771-47a7-89f8-adf90e21516f
OWNER_ADDRESS: 172.18.243.12:4000
 RUNNING_JOBS: ID:468, Type:add index, State:running, SchemaState:write reorganization, SchemaID:54, TableID:163, RowCount:136391501, ArgLen:0, start time: 2022-05-24 18:06:52.265 +0800 CST, Err:<nil>, ErrCount:0, SnapshotVersion:433425432593039364
      SELF_ID: 5cac3bba-1e52-4af7-8ee2-191bb62bee2f
        QUERY: alter table ying99_fundtxn.fund_order add KEY `FUND_ORDER_CUST_NO` (`account_id`)
1 row in set (0.01 sec)

mysql> admin show ddl jobs 1;
+--------+----------------+----------------------+----------------------+----------------------+-----------+----------+-----------+---------------------+---------------------+---------+
| JOB_ID | DB_NAME        | TABLE_NAME           | JOB_TYPE             | SCHEMA_STATE         | SCHEMA_ID | TABLE_ID | ROW_COUNT | START_TIME          | END_TIME            | STATE   |
+--------+----------------+----------------------+----------------------+----------------------+-----------+----------+-----------+---------------------+---------------------+---------+
|    468 | ying99_fundtxn | fund_order           | add index            | write reorganization |        54 |      163 | 136811054 | 2022-05-24 18:06:52 | NULL                | running |
|    467 | ying99_fundtxn | wallet_daily_balance | modify table comment | public               |        54 |      464 |         0 | 2022-05-12 20:53:25 | 2022-05-12 20:53:25 | synced  |
+--------+----------------+----------------------+----------------------+----------------------+-----------+----------+-----------+---------------------+---------------------+---------+
2 rows in set (0.01 sec)

mysql>
```

## 调整DDL速度

![](/images/posts/tidb-ddl-speed/2022-06-07-17-36-16-image.png)

## 参考

- [TiDB DDL速度相关参数](https://docs.pingcap.com/zh/tidb/stable/system-variables#tidb_ddl_error_count_limit)
