# TiDB 中的 Online DDL
```7
mysql> ADMIN SHOW DDL JOBS;
+--------+---------+-------------------------+--------------+----------------------+-----------+----------+-----------+---------------------+---------------------+---------+
| JOB_ID | DB_NAME | TABLE_NAME              | JOB_TYPE     | SCHEMA_STATE         | SCHEMA_ID | TABLE_ID | ROW_COUNT | START_TIME          | END_TIME            | STATE   |
+--------+---------+-------------------------+--------------+----------------------+-----------+----------+-----------+---------------------+---------------------+---------+
|     48 | test    | t1                      | add index    | write reorganization |         1 |       45 |    587775 | 2021-09-16 23:41:49 | NULL                | running |
|     49 | test    | t1                      | add index    | none                 |         1 |       45 |         0 | 2021-09-16 23:41:52 | NULL                | none    |
|     47 | test    | t1                      | add index    | public               |         1 |       45 |   2560000 | 2021-09-16 23:37:29 | 2021-09-16 23:39:44 | synced  |
|     46 | test    | t1                      | create table | public               |         1 |       45 |         0 | 2021-09-16 14:31:17 | 2021-09-16 14:31:17 | synced  |
|     44 | mysql   | opt_rule_blacklist      | create table | public               |         3 |       43 |         0 | 2021-09-16 14:30:26 | 2021-09-16 14:30:26 | synced  |
|     42 | mysql   | expr_pushdown_blacklist | create table | public               |         3 |       41 |         0 | 2021-09-16 14:30:26 | 2021-09-16 14:30:26 | synced  |
|     40 | mysql   | stats_top_n             | create table | public               |         3 |       39 |         0 | 2021-09-16 14:30:26 | 2021-09-16 14:30:26 | synced  |
|     38 | mysql   | bind_info               | create table | public               |         3 |       37 |         0 | 2021-09-16 14:30:26 | 2021-09-16 14:30:26 | synced  |
|     36 | mysql   | default_roles           | create table | public               |         3 |       35 |         0 | 2021-09-16 14:30:26 | 2021-09-16 14:30:26 | synced  |
|     34 | mysql   | role_edges              | create table | public               |         3 |       33 |         0 | 2021-09-16 14:30:26 | 2021-09-16 14:30:26 | synced  |
|     32 | mysql   | stats_feedback          | create table | public               |         3 |       31 |         0 | 2021-09-16 14:30:26 | 2021-09-16 14:30:26 | synced  |
|     30 | mysql   | gc_delete_range_done    | create table | public               |         3 |       29 |         0 | 2021-09-16 14:30:26 | 2021-09-16 14:30:26 | synced  |
+--------+---------+-------------------------+--------------+----------------------+-----------+----------+-----------+---------------------+---------------------+---------+
12 rows in set (0.06 sec)
```
-------------------------------------------------------------
 
随着业务需求的不断变化，对生产环境中的表对象做 DDL 操作，是不可避免的操作。
在普通关系型数据库中增加索引通常会有时间过长、锁表等风险，特别是在一张频繁更新数据的表上增加索引的时候，风险变得很大且不可控。 TiDB 的 DDL 通过实现 Google F1 的在线异步 schema 变更算法，来完成在分布式场景下的无锁，在线 schema 变更。

对于 online ddl，我们有如下的规则：
- 最多只能存在一个 ADD INDEX 类型的 online DDL
- 除了 ADD INDEX 类型的 online DDL，还可以并行执行一个非 ADD INDEX 类型的 online DDL
