前面《从0到1开始学习TiDB(二)TiDB组件之PD》介绍了pd,这里我们再介绍TiDB Server。
主要作用
TiDB Server在实际过程中也是由多个节点组成的集群,并且这里的Tidb server是无状态的,所以在实际生产生一般我们会通过nginx,lvs等负载均衡组件来为tidb server配置负载均衡。他的主要作用有:
1、处理第三方客户端的连接。 2、解析及编译sql语句。 3、关系型数据与KV数据的转化。 4、DLL和DML语句的执行。 5、垃圾回收。
基础功能模块
在Tidb server中,他有很多基础模块,分别对应不同的逻辑,例如:
1、Protocol Later模块,主要是用于连接协议和身份验证用。 2、Parse模块,主要是用于词法分析,语法分析。 3、Compile模块,主要是用于逻辑优化,物理优化。 4、Executor模块,主要是用于执行计划。 5、GC模块,主要是用于进行垃圾回收,定期清理过期数据上的锁信息和历史版本数据。 6、Schema load模块,主要是用于记录并听不各个节点的元信息。 7、work模块,主要是用来读取队列并执行。
执行流程
这里的执行流程主要是设计DML和DDL语句的执行流程,他们对应的流程如下:
DML执行流程:
客户端请求->接收请求(tidb server)->解析sql语句(tidb server)->检查语法正确性(tidb server)->生成逻辑执行计划(tidb server)->选择最优的执行计划(CBO)->转换成物理执行计划->把数据分成多个region->把数据分发到相应的TiKV节点(tidb server)->数据持久化(tikv)->事务提交->结果返回-垃圾回收。
DDL执行流程:
客户端提交DDL语句->将DDL发送到TiKV队列(tidb server)->workers模块读取队列并执行(tidb server)。
备注:
1、tidb在执行ddl的时候会将DDL队列分为三种,分别是:非加索引语句,加索引语句,执行过的语句。
2、并不是所有的tidb server节点都能执行ddl,只有被设置为owner的节点才能执行。
还没有评论,来说两句吧...