# TiDB Server

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

![right](./student-guide/diagram/01-TiDB-Sever-01-01.png)
-------------------------------------------------------------
这里我们先简要了解下它的各项功能。

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

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

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

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

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

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

