# TiDB Server

__*TiDB Server功能*__

+ 处理客户端的连接
+ SQL 语句的解析和编译
+ 关系型数据与 **KV** 的转化
+ SQL 语句的执行
+ 执行在线 **DDL**
+ 垃圾回收

![right](./student-guide/diagram/TiDBServerSimple_aa_001_20220506.png)
-------------------------------------------------------------
在接下来的课程中我们将会详细为大家介绍 TiDB Server 的主要功能以及实现原理,这里我们先简要了解下它的各项功能。TiDB Server 本身只负责 SQL 的计算引擎并不存储数据,所以 TiDB Server 是无状态的,当我们的系统面对大量并发连接的时候,我们可以通过增加 TiDB Server 的方式进行负载均衡提升高并发处理能力。

1. 处理客户端的连接
用户通过用户名+密码来进行认证,并为连接的用户赋权,这些工作主要是 'Protocol Layer' 模块完成的。

2. SQL 语句的解析和编译
监听到 SQL 语句后,TiDB Server 会进行解析和编译,在编译的过程中会进行优化,产生执行计划,这些工作是由 'Parse','Compile' 模块完成的。

3. 关系型数据与 KV 的转化
由于数据是按照 'key value' 的形式（KV）存储在 TiKV 上的,所以,关系型数据（表、索引和行） 和 KV 结构之间存在很大的区别,如果希望执行 SQL ,必须能够在关系型数据和 KV 存储间相互转换。

4. SQL 语句的执行
按照编译好的执行计划,分批到 TiKV 上去执行,数据的读取由 'Executor' 模块和 'DistSQ' 模块完成,事务相关的操作,由 'Transaction' 模块和 KV 模块来完成。

5. 在线 DDL 的执行
TiDB 数据库实现了 DDL 操作不会锁表的功能,由 'schema load' 模块,'worker' 模块和 'start job' 模块来完成。

6. 垃圾回收
GC 后台模块负责回收掉已经过期的老版本数据,这部分内容会在 TiKV 课程中讲解。


