【TiDB 4.0 PCTA 学习笔记】- 1.6 Read and Write data in the TiDB database platform(TiDB 中的读写流程)@2班+白杨

课程名称:【TiDB 4.0 PCTA 学习笔记】- 1.6 Read and Write data in the TiDB database platform(TiDB 中的读写流程)

学习时长:

课程收获:

课程内容:

TiDB的整体架构

image
1、TiDB组件的功能

理解为是数据库的SQL层,对外暴露MySQL协议的连接,负责接受客户端的连接,执行SQL解析和优化,最终生成分布式执行计划,TiDB层本身是无状态的,实践中可启动多个TiDB实例,客户端的连接可以均摊到多个TiDB实例上来达到负载均衡;但是TiDB本身不提供负载均衡;负载均衡需要依赖于外部的软件或者硬件实现;TiDB本身并不存储数据,只是解析SQL,将实际的数据请求转发给底层的存储层TiKV层
image
2、TiKV组件的功能

是基于RocksDB引擎修改实现的分布式KV存储引擎,具有高度分层的特性;在底层的RocksDB KV存储上层实现了Raft协议,保证数据的一致性;在Raft层上面又实现了MVCC特性,实现事务的多版本并发控制;在MVCC上层还有一层关于Transaction事务层来实现事务相关的内容

TIKV是一个分布式强一致的KV存储引擎,这个是不依赖于分布式文件系统实现的
image
3、PD组件的功能

PD作为TiDB集群的大脑,主要负责分配分布式事务ID,事务在开始以及提交的时候,会需要获取一个全局唯一的TSO号;另一个是实现Region以及leader的调度,让数据以及请求压力可以均衡的打散到所有TiKV节点上;PD组件本身通过ETCD实现高可用,在TiDB4.0中PD提供Dashboard的功能,方便用户管理检查集群状态
image

TiDB读写请求流程

1、SQL处理流程

SQL转化成AST(抽象语法树),通过AST生成逻辑执行计划,对生成的执行计划进行优化,优化完成,根据CPU选择实际执行计划,根据执行计划将对应的执行请求发送给TiKV节点
image
2、读请求在TiDB中的处理过程

客户端与TiDB建立连接并发送请求给TiDB

客户端接受TiDB发送的请求,获取客户端发送的SQL语句

TiDB负责parse和compile阶段,对SQL文本进行解析,并生成AST语法树进行优化

TiDB与PD进行交互 获取start_ts信息

TiDB根据执行计划以及table原信息生成executor执行器

TiDB通过gRPC请求的方式将coprocessor请求发送给TiKV层

TiKV接受请求并按照请求过滤数据,并将数据返回给TiDB

TiDB接收到所有返回结果之后整理汇总数据

TiDB将整理的结果返回给客户端

3、写请求在TiDB中的处理过程

客户端与TiDB建立连接并发送请求给TiDB

客户端接受TiDB发送的请求,获取客户端发送的SQL语句

TiDB负责parse和compile阶段,对SQL文本进行解析,并生成AST语法树进行优化

TiDB与PD进行交互 获取start_ts信息

TiDB根据执行计划以及table原信息生成executor执行器

TiDB发起commit请求

TiKV提交数据参照percolator进行二阶段提交(prewrite阶段以及commit阶段),TiDB会在二阶段提交的commit阶段向PD请求 获取commit_ts

TiKV会将提交的结果返回给TiDB

TiDB将整理的结果返回给客户端

4、对比读请求与写请求

读请求只要向PD请求一次TSO即可;写请求会请求两次TSO,一次start_ts,一次commit_ts;

对于写请求会涉及到二阶段提交以及分布式事务的相关内容

学习过程中参考的其他资料