DDL语句就是对表的定义做修改,还有一类就是加索引操作。
DDL语句的执行是不锁表的(DDL执行的过程中增删改查不会被阻塞)。
用户发出DDL语句到TiDB Server,TiDB Server由协议模块收到,解析,和编译产生执行计划。这个执行计划给start job模块接收ddl语句,start job先看自己的TiDB Server的wokers是不是owner,如果不是owner把ddl做成job放到TiKV中的队列里持久化起来。这个队列交job queue,job queue里存的全都是要执行的ddl。owner角色的TiDBServer定期去查看job queue,当发现job queue里有job的时候,从里面拿一个最先进入队列的ddl语句(job任务)先执行,执行完后这个job会被放入history queue历史队列。
TikV对DDL语句会有三个对应的队列,一个是job queue,除了加索引以外的ddl操作,一个操作叫一个job都在这进行排队。加索引操作放在另外的队列叫index queue。最后一个是history queue,执行完后这个job会被放入history queue历史队列.
Owner并不是一成不变的,它过一个周期,TiDB Server就会发生选举,选一个新的Owner,大家轮流做Owner。
同一时刻只有一个TiDB Server的workers是干活的,其他的不能干。
schema load负责将最新的表的元信息(表结构修改,加列、减列、建索引)
载入TiDB Server

