# DDL 的执行 （继续）

__*job queue*__
__*Add index queue*__
__*history queue*__

![left](./student-guide/diagram/DDLExecution02_aa_002_20220512.png)
-------------------------------------------------------------
被持久在队列中。下面介绍一下 TiKV 中的队列:

job queue:是 TiKV 中持久化未执行 job 的队列数据结构,但是里面不包含 add index job,也就是加索引的 job,因为加索引的 job 会被放在 add index queue 中,每个 TiDB 数据库只有一个,

job queue 和 Add index queue 中的 job 可以并行执行。

Add index queue:是 TiKV 中持久化未执行的 add index job,也就是加索引的 job 队列数据结构,每个 TiDB 数据库只有一个,Add index queue 和 job queue 中的 job 可以并行执行。

job history queue:是 TiKV 中持久化存放已经处理完毕 job 的队列数据结构,每个 TiDB 数据库只有一个。

所以,worker 进程会并行从 job queue 和 Add index queue 中取出第一个未执行的 job 去执行,执行完毕后,将 job 放入 job history queue 以备查询。

当 job 在执行的过程中,会经历 none,delete only,write only,write reorganizaton（delete reorganization）,public 几个状态来保证 DDL 语句可以不锁表。详细原理可以参考: http://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/41376.pdf