TiDB数据库架构概述

TiDB整体架构

TiDB Server

  1. 处理客户端链接(用户鉴权),protocal layer
  2. SQL语句的解析和编译,生成物理执行计划,发送到executor
  3. 关系型数据与KV转化(TiDB server)
  4. SQL语句执行
  5. 在线DDL执行,不阻塞读写
  6. 垃圾回收老版本数据

TiKV

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

PD(Placement Driver)

  1. 整个集群TiKV的元数据存储
  2. 分配全局ID和事务ID
  3. 生成全局时间戳TSO
  4. 收集集群信息进行调度
  5. 提供TiDB DashBoard服务

TiFlash

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

本文内容为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主要功能

  1. 处理客户端连接(Protocol Layer)
  2. SQL语句的解析和编译(Parse,Compile)
  3. 关系型数据与KV的转化
  4. SQL语句的执行
  5. 在线DDL的执行
  6. 垃圾回收

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 学习营推荐课程』笔记。