# TiDB Server 主要功能

__*TiDB server 功能*__

+ 处理客户端的连接
+ SQL 语句的解析和编译
+ 关系型数据与 KV 的转化
+ SQL 语句的执行
+ **在线 DDL** 的执行
+ 垃圾回收
+ 热点小表缓存 **V6.0**
-------------------------------------------------------------
我们可以从 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` 模块, KV 模块和 `DistSQL` 模块完成,事务相关的操作,由 `Transaction` 模块和 KV 模块来完成。

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

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

7. 热点小表缓存（V6.0）
该功能适用于频繁被访问且很少被修改的热点小表, 即把整张表的数据加载到 TiDB 服务器的内存中,直接从内存中获取表数据,避免从 TiKV 获取表数据,从而提升读性能。