TiDB-DDL流程

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容