# 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 获取表数据,从而提升读性能。