目录
1. TiDB Server架构
- protocol layer:处理客户端的连接
- Parse、Compile:负责sql解析,生成sql执行计划,生成sql执行计划后,Excutor、DistSQL、KV分批的执行sql的执行计划
- Transaction、KV:负责事务相关执行
- PD client:负责与PD,TSO是通过PD Client去和PD进行交互得到
- TiKV Client:负责与TiKV的交互,所有的sql请求都是通过TiKV Client去对TiKV进行交互
- schema、worker、start job:主要负责online DDL,不会阻塞读写
- memBuffer:负责缓存读出来的数据及元数据,登录的认证信息,统计信息等
TiDB Server 主要功能
- 处理客户端的连接(protocol layer)
- SQL语句的解析和编译(Parse、Compile)
- 关系型数据与 KV 的转化
- SQL语句的执行(Excutor)
- Online DDL 的执行(schema load、worker、start job)
- 垃圾回收(GC)
- 热点小表缓存 V6.0(cache table)
2. sql语句的解析和编译
2.1 Parse
2.2 compile
3. 行转化为KV对(聚簇表)
表ID+主键值为KEY,行里面其他值作为Value,存放在region里面
当一个region的大小达到144M时就分裂为两个region,以region为单位就可以分布式的存在各个TiKV Node
4. SQL 读写相关模块
4.1 DistSQL(复杂查询)
执行计划分为两种,第一种是较为复杂的查询,比如join、嵌套查询等等,为了避免复杂查询对TiKV存取耦合性高,把TiKV请求封装起来提供一个简单的select方法变为一个一个单表操作的计算任务的组合发送给TiKV
4.2 KV(简单查询)
比如主键、唯一键等值查询
DistSQL和KV都会经过TiKV Client发送给TiKV集群
transaction提交会向PD获取一个TSO
5. 在线DDL相关模块
同一时间只能有一个TiDB Server(owner)做DDL操作
- start job:接收DDL语句,接收后会放在TiKV一个队列中
- wokrer:owner中的worker模块去取job queue中第一个job然后执行,执行完后把该job放在history queue中,然后再去取下一个job。每个owner有任期,任期结束后会选举新的owner
- schema load:TiDB Server成为owner后,将最新的表schema信息同步到内部的缓存中,wokrer根据这些信息去执行job queue中的job
job放在TiKV中持久化存储
6. GC机制与相关模块
- 其中一台TiDB Server是GC leader
- 假如现在是14:00,safe_point=10:00,那么14:00到10:00的历史数据是保留的,10:00之前的GC就回收
- GC每10分钟触发一次(GC life time) ,默认值
7. TiDB Server的缓存
TiDB Server 缓存组成
- SQL 结果
- 线程缓存
- 元数据,统计信息
TiDB Server 缓存管理
- tidb_mem _quota_query(控制每条查询默认使用的缓存)
- oom-action(当查询使用的缓存超过了tidb_mem _quota_query值的处理操作,记录到日志或者报错)
8. 热点小表缓存
- 表的数据量不大
- 只读表或者修改不频繁的表
- 表的访问很频繁
alter table users CACHE;
tidb table cache lease = 5,默认值5秒,在5秒内都不能修改这张表,5秒后可以修改,并且修改是在TiKV中,不管在5秒内还是5秒后都可以读取,5秒内在cache table中读取,5秒后在Tikv中读取,当修改完成后,重新refresh到cache table中
热点小表缓存-应用
- TiDB 对于每张缓存表的大小限制为 64 MB
- 适用于查询频繁、数据量不大、极少修改的场景
- 在租约(tidb_table_cache_lease)时间内,写操作会被阻塞
- 当租约到期(tidb table cache lease)时,读性能会下降
- 不支持对缓存表直接做 DDL 操作,需要先关闭
- 对于表加载较慢或者极少修改的表,可以适当延长 tidb table cache lease 保持读性能稳定
9. 总结
- TiDB Server 的整体架构
- TiDB Server 的主要功能
- TiDB Server 的进程与缓存
来自TiDB官方资料