TiDB数据库架构概述
TiDB整体架构
- PD集群:控制中枢,全局时间,region分布,产生事务ID等
- TiDB server:解析编译SQL,生成执行计划
- TiKV:实际存储KV数据,MVCC,算子下推,事务与强一致性(multi raft) OLTP
- TiFlash:列式存储,负载均衡,强一致读取,实时更新 OLAP
TiDB Server
- 处理客户端链接(用户鉴权),protocal layer
- SQL语句的解析和编译,生成物理执行计划,发送到executor
- 关系型数据与KV转化(TiDB server)
- SQL语句执行
- 在线DDL执行,不阻塞读写
- 垃圾回收老版本数据

TiKV
- 数据持久化,使用LSM tree(RocksDB)
- 分布式事务支持,两阶段提交
- 副本的强一致性和高可用性,region自动分裂合并,自动扩展
- MVCC(多版本并发控制),隔离级别,分布式事务,数据快速恢复
- Coprocessor(算子下推)

PD(Placement Driver)
- 整个集群TiKV的元数据存储
- 分配全局ID和事务ID
- 生成全局时间戳TSO
- 收集集群信息进行调度
- 提供TiDB DashBoard服务

TiFlash
- 列式存储提高分析查询效率
- 支持强一致性和实时性,对TiKV数据准实时复制和强一致性
- 业务隔离
- 智能选择

本文内容为PingCAP『Talent Plan 之 TinyKV 学习营推荐课程』笔记。
TiDB Server架构原理简介
理解TiDB Server架构

TiDB Server是无状态的,通过LVS等可进行负载均衡。主要功能是解析SQL,将请求转化为实际的操作发送给TiKV。
最上面一层Protocol Layer,Parse,Compile(编译优化),生成SQL的执行计划。 第二层的executor,DistSQL收到执行计划,分批执行计划。Transaction,KV负责事务相关的执行。 第三层的PD Client,TiKV Client和PD,TiKV进行交互。SchemaLoad,worker,start job三个模块负责online ddl。
membuffer用来缓存数据。
TiDB Server主要功能
- 处理客户端连接(Protocol Layer)
- SQL语句的解析和编译(Parse,Compile)
- 关系型数据与KV的转化
- SQL语句的执行
- 在线DDL的执行
- 垃圾回收
SQL语句的解析和编译 - Parse

SQL语句的解析和编译 - compile

验证:合法性验证。 逻辑优化:关系型代数等价变换,列裁剪,最大最小消除,投影消除,谓词下推,子查询,外连接转内连接。 物理优化:数据分布,数据大小。索引 or 全表扫描。
生成执行计划
关系型数据库和KV转换

编号作为主键,转化为聚簇表

解决key在数据库层面唯一,需要加表的编号

存储的key,value对

如果用非聚簇表,会生成新的主键。
region超过96M后,会进行分裂。


SQL读写相关模块

DistSQL只进行单个表的操作 点查:走KV模块 transaction:两阶段提交,锁操作->写TiKV集群
在线DDL相关模块
同一时刻只能有一个TiDB Server在做DDL操作


TiDB Server 缓存
组成: * SQL结果 * 线程缓存 * 元数据,统计信息
缓存管理: * tidb_mem_quota_query * oom-action
本文内容为PingCAP『Talent Plan 之 TinyKV 学习营推荐课程』笔记。